RewriteCond
を使用して、Refererに要求されたURIが含まれているかどうかを確認する方法はありますか...
RewriteCond %{HTTP_REFERER} == 'Host.com/' + %{REQUEST_URI} ...
?
サーファーが同じページにリンクするページ上のリンクをクリックしたかどうかをキャッチし、それに基づいてRewriteRule
を変更する必要があります。
はい、これを行うには条件を作成できます(少し奇妙に聞こえますが、ちょっと)...
ユーザーが同じページにリンクしているページのリンクを「クリック」したことを確認するには...つまり、リクエストされたホスト+ URLパスがHTTPリファラーリクエストヘッダーのサブセットであるかどうかを確認するには、次のようにします。 mod_rewriteを使用した次の例condition:
RewriteCond %{HTTP_REFERER}@@%{HTTP_Host}%{REQUEST_URI} ^https?://([a-z.-]+/[^?]*)(?:.*)@@\1$
@@
は、URLで発生しない単なる文字シーケンスであり、照合しようとしている2つの部分の間の区切り文字として機能します。
CondPattern(regex)は、後方参照(\1
)を使用して、RefererパターンでキャプチャされたサブグループがHTTP_Host
+ REQUEST_URI
と一致することを確認します。
サイトがHTTPSのみの場合は、?
の^https?://
を削除できます。
これはHTTP_REFERERにある可能性のあるクエリ文字列を明示的に無視し、URLパスとホスト名のみがチェックされることに注意してください。
HTTPリファラーリクエストヘッダーに関する必須のメモを追加するだけです... 100%信頼できるわけではありません。ユーザーエージェントは、Refererヘッダーを期待どおりに送信しない場合があり、ユーザーがそうしようとすると簡単に偽装されます。