現在のリファラーが自分のドメインでない場合、動作が異なる.htaccess mod_rewriteを作成しようとしています。たとえば、example.comを所有しているとします(例:www.example.com、http://example.comなど)。誰かがexample.com(またはbeta.example.comなどのサブドメイン)に行くと、この.htaccessルールを無視したいと思います。だから私は正規表現は基本的にちょうどそれのどこかにexample.comを探して、それらを無視すると思います。.htaccess reffererが現在のドメインでないかどうかを確認します。
しかし、otherdomain.com(cnameやAレコードを介してexample.comを指すと想定される)などのドメインが自分のサイトにアクセスしているので、どこかにリダイレクトしたいと思います。私がこれまでにしてきたことは、私が近くにいると信じているが働いていないことである。
これらのルールと私の主な混乱は、RewriteRule(この場合は^ $)の後ろにある部分です。私はGoogle検索にいくつかの異なるものがあるのを見てきましたが、その違いについてはわかりません。例えば、私も試してみてください、私も
RewriteCond %{HTTP_REFERER} ^http://(.+\.)*\.com
RewriteCond %1 !^(example)\.$
RewriteRule ^$ redirectfile.php [R=302,L]
おかげで再利用するようにも試合をキャプチャします。しかし、それらのルールは機能しているようには見えません。それは常にリダイレクトしています。 random.example.com(これはルールを無視する必要があります)とtest.local(同じサーバーを指していますが、ルールに従う必要があります)を使用してテストします。これらのそれぞれのケースでは、$ _SERVERとHTTP_REFERERをダンプしたPHPファイルにリダイレクトさせて、正しい値を持つHTTP_HOSTを使用しようとしました。しかし、ルールにはまだ運がありません。それはHTTP_HOSTがその正規表現のようなhttpを含んでいないからですか? – joshholat
私の最後の声明はそれでなければなりません。私はhttpの部分を取り出し、HTTP_HOSTを使いました、そして、今働いています。 HTTP_HOSTを使用するのは安全ですか?とにかくHTTP_REFERERよりも信頼性が高いでしょう。 – joshholat
@joshholat 'HTTP_HOST'はより信頼性が高くなりますが、あなたが来たページのドメインではなく、要求しているページのドメインを常に提供します。後者が必要な場合は、 'HTTP_REFERER'を使うべきです。ブラウザに直接URLを入力したり、ブックマークしたり、安全なページから来た場合は、「HTTP_REFERER」は空白(空文字列)になります。 –