一部のボットは、次で終わるリンクごとにサイトをクロールしています:
?utm_source=dlvr.it&utm_medium=Twitter
IPをチェックアウトしていません。
次に、他のボット(10+)がリンクルール?utm_source=dlvr.it&utm_medium=Twitter
に従い、サイトをクロールします。これにより、大量のトラフィックが発生し、サイトがシャットダウンします。サイトにアクセスするときに、HTTP 403
ステータスコードを使用して、10個以上の他のボットをブラックリストに追加しました。
しかし、最良の方法は、次で終わるすべてのリンクについて、私のサイトをクロールした最初のボットを見つけることです。
?utm_source=dlvr.it&utm_medium=Twitter
または、URLに次が含まれる場合、HTTP 403
リダイレクトステータスコードを使用します。
?utm_source=dlvr.it&utm_medium=Twitter
次のような。htaccessコードを追加して、誰かがxmlrpc.php
ページをクロールできないようにするコードを追加する方法を知っています。
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
しかし、URLのクエリはどうでしょうか?
mod_rewriteモジュールがインストールされている場合、これをWebサイトのルートフォルダー(通常はpublic_html
フォルダー)の。htaccessファイルに配置できます。 ):
RewriteEngine On
RewriteRule ^\?utm_source\=dlvr.it\&utm_medium\=Twitter$ - [R=403,NC,L]
\
から=
を削除する必要があるかもしれませんが、equalsをエスケープする必要があるかどうかは思い出せません。
URLの任意の場所で文字列を検索する場合、別の方法は次のようになります。
RewriteEngine On
RewriteRule ^(.*)\?utm_source\=dlvr.it\&utm_medium\=Twitter(.*)$ - [R=403,NC,L]
末尾のNC
は大文字と小文字が区別されないことを意味するため、テキストがすべて大文字の場合、ボットはエラー403
にリダイレクトされます。
?utm_source = dlvr.it&utm_medium = Twitter
utm_source
およびutm_medium
は、キャンペーンを監視するためにGoogleアナリティクス(および場合によっては他のトラッカー)で使用されるため、このクエリ文字列で純粋にアクセスをブロックしても「正しい」とは言えません。 OK.
クエリ文字列で実現する重要なポイントは、mod_rewriteのRewriteRule
のみを使用して(またはmod_setenvifでRequest_URI
変数を使用して-コメントで示唆されているように)一致できないことです。クエリ文字列はURLパスから削除されますbeforeRewriteRule
パターンと照合されます。
書き換えエンジン(mod_rewrite)がまだ有効になっていない場合は有効にします。
RewriteEngine On
RewriteCond
ディレクティブを使用する必要があります。したがって、上記のクエリ文字列に一致するすべてのリクエストに対して「403 Forbidden」を提供するには、次のようなものを使用できます。
RewriteCond %{QUERY_STRING} =utm_source=dlvr.it&utm_medium=Twitter
RewriteRule .* - [F]
これは、指定されたクエリ文字列に対するexactの一致です(正規表現ではないため、dotをエスケープする必要はありません)。 L
フラグを指定する場合、F
フラグは必要ありません(暗黙的です)。 (F
はR=403
の省略形です。)
制限を緩和し、上記のクエリ文字列で始まるすべてのクエリ文字列と一致させる必要がある場合は、正規表現を使用します。
RewriteCond %{QUERY_STRING} ^utm_source=dlvr\.it&utm_medium=Twitter
RewriteRule .* - [F]
NC
(NOCASE
)フラグを使用して、大文字と小文字を区別しない正規表現を作成することもできます。ただし、一致するケースを明確に無視する場合にのみ、これを使用します。人々はこのフラグを習慣から追加する傾向がありますが、多くの場合、それは不必要であり(時には正しくないこともあります)、正規表現エンジンの動作を少し難しくします。
すべてのリクエストが処理されるため、これは特に効率的ではありません。たとえば、/path/to/files
パス内のURLのみを対象とする場合、RewriteRule
パターンをより制限的にすることができます。
RewriteRule ^path/to/files/ - [F]