ホーム > ネット > .htaccess 使い方 RewriteCond 書式 変数名 一覧
目次 | 元のページ 前のページ | 次のページ サイトマップ | ページEND

.htaccess 使い方 RewriteCond 書式 変数名 一覧


.htaccess 使い方 RewriteCond 書式 変数名 一覧



ディレクティブ 「RewriteCond」 は、RewriteRule の実行条件を定義するための記述で、RewriteCond に記述した条件が満たされた時のみ RewriteRule に書かれた URL の書き換えと転送が実行されます

RewriteCond は、RewriteRule の記述部の前に複数個記述することができ、RewriteCond を複数記述した場合には、複数の条件が全て一致した場合に RewriteRule を実行するのか(AND条件)、複数の条件のいずれかが一致した場合に実行するのか(OR条件) を指定することができます




RewriteCond 書式



書式 RewriteCond %変数名(テスト文字列) 条件パターン(正規表現) [フラグ]
RewriteRule 「RewriteRule」URL書換&転送設定を記述
記述例 条件を一つ指定する場合
RewriteCond %変数名 条件
RewriteRule URL書換&転送の記述
RewriteCond %変数名 条件 [NC]
RewriteRule URL書換&転送の記述
条件を複数指定する場合 (AND条件の例)
RewriteCond %変数名 条件
RewriteCond %変数名 条件
RewriteRule URL書換&転送の記述
条件を複数指定する場合 (OR条件で、1つ目の条件は大文字/小文字を区別しない場合の例)
RewriteCond %変数名 条件 [OR,NC]
RewriteCond %変数名 条件
RewriteRule URL書換&転送の記述
説明 フラグ
RewriteCond の適用条件 AND/OR を切替える
RewriteCond を複数指定した場合に AND/OR を切替えます
フラグを記述せずに RewriteCond を複数行記述した場合は AND になります
フラグに [OR] と記述した場合は OR になります
条件判定に大文字/小文字の区別をするか否かを切替える
その行の RewriteCond の条件比較を大文字と小文字を区別するか否かを切替えます
[NC] と記述することで大文字と小文字を区別しなくなります
(NCを指定しないと区別します)
OR と NC 両方指定したい場合には [OR,NC] のようにカンマ区切りで記述します




RewriteCond 後方参照



RewriteCondの条件パターンで「()(カッコ)」を使って一致した値は、変数を使って再利用でき、これを後方参照と言います

RewriteCondで指定したパターンを参照する場合は「%(パーセント)」を使い、「()(カッコ)」が複数ある場合は左から %1、%2といった具合に利用することができます


同じように、RewriteRuleディレクティブでも後方参照を利用でき、RewriteRuleでは通常の正規表現の後方参照と同じように「$(ドル)」で利用できます


使用例 http://example.com/D1/D2/index.html でアクセスした場合
記述例 RewriteCond %{REQUEST_FILENAME} ^(.*)/(.*)/index.html$
RewriteRule ^/D1/(.*)/(.*)$ /$1/%1/$2
結果 RewriteRuleで書き変えられた結果、「/huga/ex/index.html」となります
説明 「%」 と 「$」 で、それぞれ RewriteCond と RewriteRule の後方参照を利用しています
「$1」 には、RewriteRule の最初の()内文字列を、「$2」 には、RewriteRule の 2番目の()内文字列が入ります
「%1」 には、RewriteCond の最初の()内文字列が入ります




RewriteCond 変数名



変数名には Apache が用意した以下の変数が利用できます


情報のタイプ 変数名 値 ・ 意味
HTTP ヘッダ
(HTTP headers)
HTTP_USER_AGENT ユーザーエージェント
HTTP_REFERER 参照元URL
HTTP_COOKIE クッキー情報
HTTP_FORWARDED プロキシ情報
HTTP_HOST サーバーのホスト名
HTTP_PROXY_CONNECTION プロキシを経由しているか否か
HTTP_ACCEPT ブラウザの言語タイプ
サーバ内部変数
(server internals)
DOCUMENT_ROOT ドキュメントルートのパス
SERVER_ADMIN サーバー管理者情報
SERVER_NAME サーバー名
SERVER_ADDR サーバーのアドレス
SERVER_PORT サーバーのポート番号
SERVER_PROTOCOL プロトコルバージョン
プロトコルバージョン サーバーソフトウェア
コネクション
& リクエスト
(connection
& request)
REMOTE_ADDR リモートアドレス
REMOTE_HOST リモートホスト名
REMOTE_USER リモートユーザー名 (基本認証利用時)
REMOTE_IDENT リモートユーザーのID
REQUEST_METHOD リクエストメソッド
SCRIPT_FILENAME スクリプトファイル名
PATH_INFO パス情報
QUERY_STRING クエリ文字列
AUTH_TYPE 認証タイプ
日時
(date and time)
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY 曜日 (0:日 ~ 6:土)
TIME 年月日時分秒 (例:20130123123456)
特殊
(specials)
API_VERSION APIバージョン
THE_REQUEST リクエスト文字列
REQUEST_URI リクエストURI
REQUEST_FILENAME リクエストされたファイル名
IS_SUBREQ サブリクエストか否か
HTTPS HTTPSでのアクセスか否か




RewriteCond 条件パターン



RewriteCondでは条件に一致するパターンをPerl互換の正規表現で指定します
例えば、「!file-name」とあれば、先頭の「!」は否定なので、「file-name」と一致しなかった場合となります

以下のような演算子が利用できます


パターン 意味
! 否定
< テスト文字列より上の場合true
> テスト文字列より下の場合true
= テスト文字列と等しい場合true
<= テスト文字列以上の場合true
>= テスト文字列以下の場合true
-d (is directory)ディレクトリが存在すればtrue
-f (is regular file)ファイルが存在すればtrue
-eq (is numerically equal to)いわゆる「=」
-ge (is numerically greater than or equal to)いわゆる「<=」
-gt (is numerically greater than)いわゆる「<」
-le (is numerically less than or equal to)いわゆる「>=」
-lt (is numerically less than)いわゆる「>」
-F (is existing file, via subrequest)アクセス可能な有効なパスを指している場合にtrue (内部サブリクエストを用いてcheckされる)
-l (is symbolic link)シンボルリンク(-H、-Lも同じ意味。ちなみに小文字エルです)
-s (is regular file, with size)ファイルが存在し、サイズが0でなければtrue
-U (is existing URL, via subrequest)アクセス可能な有効なURLとなっている場合にtrue
-x (has executable permissions)実行権限がある場合にtrue




RewriteCond オプション



以下のようなオプションが利用できます


オプション 意味
OR 連続した複数の条件の内、どちらかに一致した場合に実行する
指定しない場合はANDとなり、連続した全ての条件が一致した場合にだけ実行する
NC 大文字小文字を区別しない

目次 | 元のページ 前のページ | 次のページ サイトマップ | ページTOP
ホーム > ネット > .htaccess 使い方 RewriteCond 書式 変数名 一覧
   

© 2014 abhp.net All Rights Reserved.

参考情報


Apacheのmod_rewriteモジュールの使い方を徹底的に解説 OXY NOTES
Apache RewriteCond の基礎知識 WEB ARCH LABO

ページTOP
ページTOP
ページTOP
ページTOP