web-dev-qa-db-ja.com

.htaccessリダイレクトは、ドメインの後に1文字+ Word "shop"を含むURLの "410 Gone"ステータスにリダイレクトします

マルウェア攻撃からDrupal 7サイトを回復した後、次のような(以前は)スパムコンテンツを指す多くのリンクができてしまいます。

_https://www.example.com/lshop/puma-rihanna-c-449/?zenid=id311p8tc67mbnbu8gb17d1uf1
https://www.example.com/eshop/nike-start-l-259/
https://www.example.com/eshop
https://www.example.com/fshop/adidas-maradona-k-149/
_

コンテンツは削除されましたが、バックリンクが残っています。悪意のあるバックリンクを_.htaccess_ステータスページにリダイレクトする_410 Gone_でこのルールを作成できました:

_<IfModule mod_rewrite.c>
redirect 410 /ashop/
redirect 410 /ashop

redirect 410 /bshop/
redirect 410 /bshop

redirect 410 /cshop/
redirect 410 /cshop

redirect 410 /eshop/
redirect 410 /eshop

redirect 410 /fshop/
redirect 410 /fshop

redirect 410 /ishop/
redirect 410 /ishop

redirect 410 /lshop/
redirect 410 /lshop

redirect 410 /oshop/
redirect 410 /oshop

redirect 410 /pshop/
redirect 410 /pshop
</IfModule>
_

リストは長くすることができます。キャッチする方法-正規表現を使用する-パターン「バックスラッシュの後ろにドメイン+ 1文字+ Word 'ショップ'オプションでバックスラッシュを続けて」、そのようなリンクを_410_それがDrupalに触れる前にサーバーレベルで?

thesetwo の回答に基づいて次のパターンを試しましたが、成功しませんでした:

_redirect 410 /[a-z]shop/
redirect 410 /^([a-zA-Z])shop/
redirect 410 ^\/([a-z])(shop)\/(.*)$
redirect 410 ^[a-z]shop+$
_
1
Jasom Dotnet

redirectはmod_aliasディレクティブ(mod_rewriteではない)であり、正規表現を受け入れません。 mod_rewrite RewriteRuleディレクティブを使用するためにリンクする両方の回答。

.htaccessでは、RewriteRulepatternは、URLパスの先頭のスラッシュと一致しません(mod_alias RedirectまたはRedirectMatchディレクティブとは異なります)。

例えば:

RewriteRule ^[a-z]shop($|/) - [G]

上記は/xshopまたは/xshop/<anything>xは任意の小文字)のリクエストに一致し、410 Goneを提供します。

これは.htaccessファイルの先頭近くに配置する必要があり、<IfModule>ラッパーは不要です。

1
MrWhite