スポンサードリンク

【mod_rewrite】フラグ

mod_rewriteで使用するフラグをまとめています。

スポンサードリンク

RewriteCondで使用するフラグ

NC 大文字小文字の区別をせずにパターンマッチを行う。「no case」
OR RewriteCondの条件を「or」でつなぐ

上記フラグは、RewriteCondの第3引数で指定します。

RewriteCond 対象文字列 条件パターン [○○]

複数のフラグを使う場合はカンマで区切ります。 [NC,OR]

RewriteRuleで使用するフラグ

R

指定したURLにリダイレクトする。(redirect)

【例】「R=301」で301リダイレクト

F 現在のURLへのアクセスを禁止にする(403エラーを返す)。(forbidden)
G 現在のURLを消去済みにする(410エラーを返す)。(gone)
P 強制的に置換対象部を内部的にプロキシリクエストとみなし、その場でプロキシモジュールを通して出力する。(proxy)
L ここでURL書き換え処理を中止し、それ以降の書き換えはしないようにする。(last)
N URL書き換え処理を、最初の書き換えルールから再度実行する。
その際マッチングされるURLは当初のURLではなく、最後に書き換えられた URLとなる。永久ループを作らないように留意する。(next)
C

現在のルールを次のルールにチェインする。なお次のルールも、後続のルールなどにチェインすることもできる。詳細はRewriteRuleで用いる「Cフラグ」についてを参照(chained)

【例】
RewriteCondは直後のRewriteRuleしか適用されないが、Cフラグを指定することで、次のRewriteRuleにも適用することができる
RewriteEngine on
RewriteCond 対象文字列 条件パターン [○○]
RewriteRule パターン 置換対象 [C]
RewriteRule パターン 置換対象 [C]
RewriteRule パターン 置換対象
※一つ目のRewriteRuleでパターンマッチすれば次のRewriteRuleに処理が移るが、一つ目でパターンマッチしなければそこで処理は終了する(2つ目のRewriteRuleは処理されない)

T=MIME-type ターゲットファイルのMIMEタイプを強制的にMIME-typeにする。(type)
NS 現在のリクエストが内部のサブリクエストである場合に、書き換えエンジンが書き換えルールをスキップするようにする。(no sub-request)
NC

大文字小文字の区別をせずにパターンマッチを行う。(no case)

【例】
RewriteRule ^([-0-9a-zA-Z]*)\.html /abc/$1.html
   ↓ NCフラグを用いるとこのようにできる
RewriteRule ^([-0-9a-z]*)\.html /abc/$1.html [NC]

QSA 置換文字列の中でマッチしたものを書き換えるのではなく、そこにクエリー文字列部分を追加するようにする。
書き換えルールを通してクエリー文字列に何かデータを追加したい場合に使用する。(query string append)
NE mod_rewriteが書き換え結果に対して通常行うURLエスケープルールを適用しないようにする。
通常、特殊文字(%、$、;など)は16進数の文字列にエスケープ処理される()が、このフラグを使用することでエスケープ処理を抑制することができる。
これにより、出力の中にパーセント文字を使うことができる。(no URI escaping of output)

【例】「% → %25」「$ → %24」「; → %3B」「= → %3d」となるのを抑制する
PT

内部のrequest_rec構造体のURIフィールドにfilenameフィールドの値をセットする。
その後、URIからファイル名への変換処理を行なうAlias、ScriptAlias、Redirectといったディレクティブを設定する。
PTフラグをつけた場合、Lフラグも指定したと見なされる。(pass through to next handler)

【備考】「.htaccess」や「<Directory>セクション」での設定では、デフォルトで有効になっている

S=数字 現在のルールがマッチしたら、次の数字番目のルールをスキップする。(skip next rule)
E=VAR:VAL VARという名前の環境変数の値をVALにする。
VALには、正規表現の後方参照として展開される$Nと%Nを書くことができる。
このフラグを複数使って、複数の変数を定義することもできる。
この変数は多くの場合、通常後からXSSI( を通して)またはCGI(たとえば $ENV{'VAR'})のように参照される。
さらに、RewriteCondパターン %{ENV:VAR}を通して参照することもできる。
これを使ってURLからの情報を切り取って記憶する。(set environment variable)

上記フラグは、RewriteRuleの第3引数で指定します。

RewriteRule パターン 置換対象 [○○]

複数のフラグを指定する場合はカンマで区切ります。 [R,L]など

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント