私はhtaccess
でこれらのタイプのルールを何度も見ました:
RewriteCond %{HTTP_REFERER} !^http://www.domain.it$ [NC]
または
RewriteCond %{HTTP_Host} !^www\.domain\.it$ [NC]
ドメイン部分のみをチェックするとき、なぜNC
フラグが必要なのですか?
ブラウザは常にドメイン名の大文字を小文字に変換するに気づいたので、この場合[NC]
フラグが何のために役立つかわかりません。
URLの残りの部分をチェックすると、Unixシステムで[NC]
フラグの必要性を理解していますwww.domain.com/index.html
はwww.domain.com/INDEX.HTML
とは異なるファイルですが、NC
の必要性がわかりませんRewriteRuleでドメイン部分のみをチェックするときにフラグを立てます。
上記を読むのに時間がかかったので、マイナーな質問も1つ聞かせてくださいNC
フラグに直接関係していませんが、RewriteCond
に関係しています
上記のRewriteCond
は両方ともうまく機能しますが、ドットの前にスラッシュがあるものだけが機能すると思いました(!^www\.domain\.it$
)スラッシュのないドットは 'any char'正規表現では、\.
はドット文字を意味しますが、驚いたことに、他の文字もうまく機能します。理由を知っていますか?
[NC]
を持つことは絶対に必須ではありませんが、ドメインのマッチングに使用することをお勧めします。最近のブラウザはドメイン名を小文字に変換しているかもしれませんが、古いブラウザやwget
、curl
などのコマンドラインユーティリティはどうでしょうか。したがって、クライアントが小文字のドメイン名を送信し、[NC]
。
2番目の質問について.
は任意の文字に一致するため、www.domain.com
に一致しますが、一致したくないwww-domain-com
テキストにも一致します。したがって、www\.domain\.com
を使用することをお勧めします
NC = nocase
は、着信リファラーのトラフィックが特定のパターンと一致するかどうかを意味します。
Apache [NC | nocase]フラグ を参照してください
私は[NC]を確実に知りませんが、いくつかのありそうもない出来事でENV varがあると思います。大文字の文字を含めることができます。
正規表現のドットは、1文字、任意の文字を意味します。 SO文字列が http:// www_domain-it または http:// wwwadomain1it の場合、最初の条件も一致します