mod_rewrite
URLの置換を行う。
RewriteRule ではURLのパスとファイル名に対する正規表現による条件のみ。
RewriteCond ではUserAgentやIPアドレスなども条件に含めることができる。
RewriteRule だけでもURLの置換は行えるが、RewriteCondを合わせて使うことによってより細かい条件の指定ができる。
.htaccessファイルを編集した場合はapacheの再起動が必要。
RewriteCond
RewriteCond arg1 arg2 [arg3]
arg1 | 条件の対象(%{変数名}) |
---|---|
arg2 | 条件パターン(正規表現、オプション) |
arg3 |
フラグ([OR], [NC], [OR,NC]) -f : ファイルが存在する(!-fで存在しない) -d : ディレクトリが存在する(!-dで存在しない) |
RewriteRule
RewriteRule arg1 arg2 [arg3]
arg1 | 置換対象条件(正規表現) ドメイン/以降の文字列が来る |
---|---|
arg2 | 置換後文字列 |
arg3 | フラグ([L], [C]など) |
RewriteBase
RewriteBase arg1
arg1 | 置換後のベースとなるパス RewriteRuleのarg2にはこのパス以降のパスを指定する(arg1には影響しない) |
---|
基本
例1.
RewriteCond %{REQUEST_URI} ^/index.html$ // [1]
RewriteRule ^(.*)$ $1 // [1]を満たす時のみ実行される
例2.
RewriteCond 〜 // [1]
RewriteRule 〜 // [1]を満たす時のみ実行される
RewriteRule 〜 // 常に実行される
例3.
RewriteCond 〜 // [1]
RewriteRule 〜 [C] // [1]を満たす時のみ実行される
RewriteRule 〜 // [1]を満たす時のみ上の行を実行した後実行される