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]を満たす時のみ上の行を実行した後実行される