私のウェブサイトは、数百のURLを作成する製薬会社のスパム攻撃に見舞われ、そのすべてに最後の5文字-1234.pdf
が含まれています。
Googleや他の検索エンジンがこれらをより迅速に削除するように、これらのページを410/GONEステータスコードで返したいのですが、.htaccess
でこれを行う簡単な方法は、すべてのURLをリストする以外にあります。 1つ1つにRewriteRule
sを設定する(かなりの時間がかかるプロセス!)
-1234.pdf
というリテラル文字列で終わるすべてのURLに410 Goneを提供するには、.htaccess
ファイルの先頭で次のmod_rewriteディレクティブを使用できます。
RewriteEngine On
RewriteRule -1234\.pdf$ - [G]
または、-NNNN.pdf
で終わるURLを拒否するには、NNNN
が少なくとも4桁の数字である場合、RewriteRule
patternを-\d{4,}\.pdf$
のようなものに変更できます。
しかし、URLは引き続き404を返します。
サーバーがカスタム410 ErrorDocumentを定義し、HTTP応答コードを上書きしている場合は、.htaccess
ファイルの先頭に次のように設定します(後で.htaccess
ファイルまたはサーバーでカスタム410 ErrorDocument
を自分で定義していないことを確認してくださいconfig):
ErrorDocument 410 default
PDATE:文字列 "stmap_9874100.html"(最後の3桁は常に異なる)を持つ他のスパムURLもいくつかありますが、これらのURLを410に設定するために同様のクエリを作成できますか?
はい、前と同様の別のディレクティブを追加できます。
RewriteRule stmap_9874\d{3}\.html$ - [G]
RewriteRule
pattern(regex /正規表現)およびディレクティブの説明:
stmap_9874
-これらの文字は文字通り(URLパス内の任意の場所)に一致します。
\d
は任意の数字(0〜9)を表す省略文字クラスであり、\d{3}
はその3つです。
\.
はリテラルのドットに一致します。それ以外の場合、正規表現のドットは任意の文字に一致します(改行を除く)。
html
-これらの文字は文字通り一致します。
$
は、文字列の終わりを表す「アンカー」です。したがって、この文字列はURLパスの最後にある必要があります。
-
(ハイフン)-正規表現の一部ではありません。これはRewriteRule
ディレクティブの2番目の引数です。これは単なる「プレースホルダー」であり、置換がないことを示します。 URLが他の場所に書き換えられたりリダイレクトされたりすることはありません。
G
フラグ(R=410
の略)は、410 Gone応答を返します。 (ここでは、L
フラグは不要です。これは、3xx(および2xx)の範囲外の応答コードを指定するときに暗黙的に指定されるためです。)