Apache 2.4のRewriteCond, RewriteRuleのチートシート。
前提条件として、RewriteEngine Onになっていることを確認する。
例えば↓の感じで使える。
この例では、192.168.100のIPレンジ以外のアクセスを全てメンテナンスページへリダイレクトする。
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^(192.168.100)$
RewriteRule ^(.*)$ http://example.com/maintenance.html [R=503, L]
以下、詳細です。
RewriteCondの書式
RewriteCond %変数名 条件 [フラグ]
フラグは次の種類がある。
[OR]
[AND]
[NC] 大文字小文字を区別しない
デフォルトのフラグは[AND]が適用される。
[OR]のほうが[AND]より先に評価される点に注意。
RewriteRule
RewriteRuleはファーストマッチで評価される。
フラグの細かい話は次の通り。
- R=301
- Ridirect 301の略
- 301の恒久リダイレクトをする
- L
- Lastの略
- マッチしたら以降のルールは無視する
- R
- Redirectの略
- 302のリダイレクトをする
HTTPS化したい場合の例
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/%{REQUEST_URI} [R=301, L]
URI正規化したい場合の例
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301, L]