RewriteCondの役割
RewriteCondディレクティブは、Rewrite Conditions(略:Cond)=「書き換え条件」という意味で、RewriteRuleを実行するための条件式を定義するものです。
RewriteCondのシンタックス
Apacheの公式ドキュメントには以下のように記載されています。
Syntax: RewriteCond TestString CondPattern [flags]
と、これだとちょっと分かりづらいので日本語で。
RewriteCond %変数名(テスト文字列) 条件パターン(正規表現) [フラグ]
変数名
変数には以下のリンク先のようなものがあります。(Apache version2.4 時点)
ちょっと量が多いので、公式サイトを参考に。HTTPヘッダ情報・コネクションとリクエスト情報・サーバの内部変数・システム日時、あとはHTTPSでのアクセスか否かなどの特別なものがいくつか準備されています。
条件パターン
条件パターンには正規表現を使用します。変数名で指定した変数の値(文字列)と正規表現でマッチングします。変数の値と正規表現の条件がマッチ=真(true)となり、RewriteRule が実行されます。
フラグ
最後にフラグ。以下の2種類を使います。
フラグ | 役割 |
---|---|
OR (OR next condition) | RewriteCondを複数条件指定する場合の切り替え。 指定がない場合はAND条件になります。 |
NC (No Case) | 大文字と小文字を区別を無視します。 指定がない場合は区別します。 |
ORとNCを両方設定したい場合には [OR,NC] とカンマ区切りで設定します。
RewriteCond "%{REMOTE_HOST}" "^host1" [OR] RewriteCond "%{REMOTE_HOST}" "^host2" [OR] RewriteCond "%{REMOTE_HOST}" "^host3" RewriteRule ...some special stuff for any of these hosts...
参考サイト
- Apache Module mod_rewrite
- http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html