2012-09-18 7 views
16

ちょうど「OR」フラグは.htaccessのmod_rewriteの中

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^my.domain.com$ [NC,OR] 
RewriteCond %{REQUEST_URI} !public/ 
RewriteRule (.*) /public/$1 [L] 

この.htaccessの書き換えコードを発見し、私は「OR」フラグの目的は何であったかと思いまして。 すでに文書http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteflagsを確認しましたが、coulndは情報を見つけました。

アイデア? http://httpd.apache.org/docs/current/mod/mod_rewrite.html

ornext|OR(または次の条件)から

答えて

28

は、ローカルまたは代わりの暗黙のANDでルール条件を組み合わせて、これを使用します。典型的な例:私は、ドキュメントを読んでいくつかのトラブルがあったように思える:)

RewriteCond %{REMOTE_HOST} ^host1 [OR] 
RewriteCond %{REMOTE_HOST} ^host2 [OR] 
RewriteCond %{REMOTE_HOST} ^host3 
RewriteRule ...some special stuff for any of these hosts... 
+1

おかげで... –

+1

あなたは '' IF'やフラグ 'などの条件文の句としてRewriteCond' [OR]を考える場合'論理的な' || 'としてプログラマには意味があります。 –

+2

@ YzmirRamirezそれは完全に同じではありませんが、Apacheの[OR]は暗黙のANDよりも優先順位が高く、ほとんどのプログラミング言語は&&より高い優先順位を持っています。 - 結果としてC 'a && b || c && dは '(a && b)||として評価されます。 (c && d) 'と書いてありますが、Apacheのmod_rewriteの場合はその逆です(https://stackoverflow.com/a/31572003/895077)。 –