2014-05-26 apache mod_rewrite
(いろいろっつうか、どんな環境変数使えるかってだけだな...)
基本形は以下。RewriteCond の条件に一致した場合に 403 Forbidden を返す。
# 基本系 RewriteEngine On RewriteCond 条件 RewriteRule ^.*$ - [F,L] # 条件1,2,3全部満たす場合にアクセス拒否 (AND条件) RewriteEngine On RewriteCond 条件1 RewriteCond 条件2 RewriteCond 条件3 RewriteRule ^.*$ - [F,L] # 条件1,2,3いずれか満たす場合にアクセス拒否 (OR条件) RewriteEngine On RewriteCond 条件1 [OR] RewriteCond 条件2 [OR] RewriteCond 条件3 RewriteRule ^.*$ - [F,L]
# 192.168.0.100 からのアクセスを拒否 RewriteEngine On RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.100$ RewriteRule ^.*$ - [F,L] # 192.168.0.100 以外からのアクセスを拒否 RewriteEngine On RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.100$ RewriteRule ^.*$ - [F,L] # 192.168.0.100, 192.168.0.101, 192.168.3.* からのアクセスを拒否 RewriteEngine On RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.100$ [OR] RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.101$ [OR] RewriteCond %{REMOTE_ADDR} ^192\.168\.3\. RewriteRule ^.*$ - [F,L]
# ユーザエージェントに Test が含まれていたら拒否 RewriteEngine On RewriteCond %{HTTP_USER_AGENT} Test RewriteRule ^.*$ - [F,L] # ユーザエージェントがからっぽだったら拒否 RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule ^.*$ - [F,L]
# リファラが http://example.com で始まってなかったら拒否 RewriteEngine On RewriteCond %{HTTP_REFERER} !(^http\:\/\/example\.com) RewriteRule ^.*$ - [F,L] # リファラが空だったら拒否 RewriteEngine On RewriteCond %{HTTP_REFERER} ^$ RewriteRule ^.*$ - [F,L]
# HEAD/GET/POST以外のリクエストメソッドは拒否 RewriteEngine On RewriteCond %{REQUEST_METHOD} !(^(HEAD|GET|POST)$) RewriteRule ^.*$ - [F,L]
# Basic認証時、ユーザ名が「hoge」以外はアクセス拒否 RewriteEngine On RewriteCond %{AUTH_TYPE} ^Basic$ RewriteCond %{REMOTE_USER} !(^hoge$) RewriteRule ^.*$ - [F,L]
# IPアドレスが 192.168.0.101 以外の場合、/login へのアクセスは拒否 RewriteEngine On RewriteCond %{REMOTE_ADDR} !(^192\.168\.0\.101$) RewriteCond %{REQUEST_URI} ^\/login RewriteRule ^.*$ - [F,L]
# クエリストリングにNULバイト文字(\0, URLエンコードで%00 )が含まれていたらアクセス拒否 # 例えば http://example.com/?param=abc%00123 とか RewriteEngine On RewriteCond %{QUERY_STRING} %00 RewriteRule ^.*$ - [F,L]
# ブラウザが gzip 圧縮対応してない場合はアクセス拒否 RewriteEngine On RewriteCond %{HTTP:ACCEPT-ENCODING} !(gzip\,\s*deflate) RewriteRule ^.*$ - [F,L]
詳しい仕様は以下を参照。