[Apache]
RewriteCondディレクティブでRewriteRuleの条件を設定できます。複数の条件を設定することが可能。
※RewriteCondの前にRewrite Engine On とする必要があります。
[書式]
RewriteCond テストする変数 パターン [フラグ]
フラグには[NC]もしくは[OR]を指定できます。フラグを二つ設定するにはカンマで区切ります。(例: [NC, OR]
[NC] - 大文字小文字を区別せずにパターンと一致するかどうかをテストします。
[OR] - いずれかのRewriteCondにあてはまる場合にRewriteRuleを適用します。[OR]を明示しない場合、自動でANDになります。
テストする変数には以下のようなものが使用できます。
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ
HTTPS
[使用例]
#リファラーが空の場合、アクセスを拒否する
RewriteEngine On
RewriteCond %{HTTP_REFERER} $^
RewriteRule ^.*$ [F]
#http://www.example.com を http://www.example.jpにとばす
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^/(.*) http://www.example.jp/$1
#すべてのアクセスをトップページに飛ばす
#ループをさけるため、トップページへのアクセスはリダイレクトをかけない
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^/.*$ http://www.example.com [R]
