mod_rewrite の設定

|フラグと構文          |機能|
|--------------------|----|
|`[B]`               |変換を適用する前に、英数字以外の文字をエスケープする。|
|`[C]`or`[chain]`    |ルールは次に続くルールに連鎖する。指定ルールが失敗した際にそのルールをスキップする。|
|`[CO=NAME:VAL]`<br>or`[cookie=NAME:VAL]`|クライアントブラウザーにクッキーをセットする。<br>完全な構文: `CO=NAME:VAL:domain[:lifetime[:path[:secure[:httponly]]]]`|
|`[DPI]`or`[discardpath]`|書き換えられた URI の PATH_INFO 部分は破棄される。|
|`[E=[!]VAR[:VAL]]`or`[env=[!]VAR[:VAL]]`|環境変数 `VAR` がセットされるようにする。（値 VAL が提供されている場合）<br>`!VAR` は環境変数 `VAR` の設定が解除される。|
|`[F]`or`[forbidden]`|`403 FORBIDDEN`レスポンスをクライアントブラウザに返す。|
|`[G]`or`[gone]`     |`410 GONE`レスポンスをクライアントブラウザに返す。|
|`[R]`or`[redirect]` |`302 FOUND`レスポンスをクライアントブラウザに返し、外部リダイレクトする。|
|`[R=code]`or`[redirect=code]`|外部リダイレクトを強制する。HTTPステータスコードを指定できる。|
|`[H=Content-handler]`or`[Handler=Content-handler]`|Causes the resulting URI to be sent to the specified Content-handler for processing.|
|`[L]`or`[last]`     |Stop the rewriting process immediately and don't apply any more rules. Especially note caveats for per-directory and .htaccess context (see also the END flag).|
|`[N]`or`[next]`     |Re-run the rewriting process, starting again with the first rule, using the result of the ruleset so far as a starting point.|
|`[NC]`or`[nocase]`  |パターン比較で大文字と小文字を区別しない。|
|`[NE]`or`[noescape]`|Prevent mod_rewrite from applying hexcode escaping of special characters in the result of the rewrite.|
|`[NS]`or`[nosubreq]`|現在のリクエストが内部サブリクエストであればルールをスキップする。|
|`[P]`or`[proxy]`    |Force the substitution URL to be internally sent as a proxy request.|
|`[PT]`or`[passthrough]`|Forces the resulting URI to be passed back to the URL mapping engine for processing of other URI-to-filename translators, such as Alias or Redirect.|
|`[QSA]`or`[qsappend]`|Appends any query string from the original request URL to any query string created in the rewrite target.details ...
|`[S=num]`or`[skip=num]`|Tells the rewriting engine to skip the next num rules if the current rule matches.|
|`[T=MIME-type]`or`[type=MIME-type]`|対象ファイルの MIME タイプを指定のものに強制する。|

| Cond<br>Pattern | 内容 |
|:-----------:|------|
| `!`  | 不一致パターンの指定。文字列の頭につける。 |
| `<`  | TestString が辞書的に CondPattern に先行する場合は **True** |
| `>`  | TestString が辞書的に CondPattern に後行する場合は **True** |
| `=`  | 文字列が一致したら **True** |
| `-d` | 指定したディレクトリーが存在したら **True** |
| `-f` | 指定したファイルが存在したら **True** |
| `-s` | 指定したファイルが存在してファイルサイズが 0 以上なら **True** |
| `-l` | 指定したファイルが存在してシンボリックリンクなら **True** |
| `-x` | 指定したファイルが存在して実行可能なパーミッションなら **True** |
| `-F` |  |
| `-U` |  |

|フラグ                  |内容 |
|-----------------------|----|
|`[OR]` または `[ornext]`|OR next condition の略。<br> 暗黙の AND の代わりに OR をルール条件の結合に使う。|
|`[NC]` または `[nocase]`|No Case の略。<br> 大文字と小文字の区別を無視する。<br> このフラグは TestString と CondPattern の比較にのみ有効。<br> ファイルシステムおよびサブリクエストのチェックには影響しない。|
|`[NV]` または `[novary]`|No Vary の略。<br> 条件で HTTP ヘッダが使用される場合、このフラグはレスポンスヘッダに Vary ヘッダが追加されるのを防ぐ。|

## デバッグログの出力
**mod_rewrie** はデバッグログを出力できる。
Apache のバージョンで設定が異なる。いずれも .htaccess に記述できない。
#### Apache 2.2
```apache
RewriteEngine On
RewriteLog "/var/log/httpd/rewrite.log"
RewriteLogLevel 3
```
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog

#### Apache 2.4
```apache
LogLevel alert rewrite:trace8
```
Apache 2.4 の場合、エラーログに出力される。
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging