.htaccess - アクセス制限
特定のアクセスに対し、相手のサーバー変数を取得して、アクセス制限を掛けます。
アクセス制限は、サーバに思わぬ負荷をかけることがあります。不必要なアクセス制限は、できるだけ掛けないようにしてください。
*注 十分にアクセス情報を解析してから設定してください。設定によっては、正当な訪問者もアクセスできなくなる可能性があります。
サーバー変数
変数名 | 説明 |
---|---|
HTTP_USER_AGENT | ブラウザの種類とバージョン。 |
HTTP_REFERER | 参照元の URL 。 |
HTTP_COOKIE | 設定されているクッキー情報。 |
HTTP_FORWARDED | プロキシサーバ情報。 |
HTTP_HOST | 接続要求しているホスト名。 |
HTTP_PROXY_CONNECTION | 接続先プロキシサーバとの接続状態。 |
HTTP_ACCEPT | ブラウザが認識可能なデータ形式。 |
DOCUMENT_ROOT | サイトのルートディレクトリ。 |
SERVER_ADMIN | サーバ管理者のメールアドレス情報。 |
SERVER_NAME | サーバのホスト名、ドメイン名、またはIPアドレス情報。 |
SERVER_ADDR | サーバのIPアドレス。 |
SERVER_PORT | 送信に使われたサーバのポート番号。 |
SERVER_PROTOCOL | 送信に使われたプロトコルの名前とレビジョン情報。 |
SERVER_SOFTWARE | 起動したサーバソフトウエアの名前とバージョン情報。 |
REMOTE_ADDR | リモートホストのIPアドレス情報。 |
REMOTE_HOST | リモートホストのドメイン名。 |
REMOTE_USER | ユーザの認証名。 |
REMOTE_IDENT | リモートホストのユーザ名。 |
REQUEST_METHOD | リクエストを送信した方法。 |
REQUEST_URI | リクエストされたURI。 |
SCRIPT_FILENAME | 現在実行しているスクリプト名。 |
PATH_INFO | クライアントから送られるパス情報。 |
QUERY_STRING | URL に付加して渡された "?" 以降の文字列。 |
AUTH_TYPE | ユーザを認証するときに使用する認証方法。 |
TIME_YEAR | サーバのシステム日付・年 |
TIME_MON | サーバのシステム日付・月 |
TIME_DAY | サーバのシステム日付・日 |
TIME_HOUR | サーバのシステム日付・時 |
TIME_MIN | サーバのシステム日付・分 |
TIME_SEC | サーバのシステム日付・秒 |
TIME_WDAY | サーバのシステム日付・曜日 |
TIME | サーバのシステム日付・Unix タイムスタンプ。 |
一般的な書式
RewriteEngine on RewriteBase / # "example.com" からのアクセスを全て禁止する RewriteCond %{REMOTE_HOST} ^example.com$ [NC] RewriteRule ^.* - [F,L] RewriteEngine off
*注 サーバーによっては、"RewriteEngine off" を記述すると動作が不安定になる事があります。その場合は、記述しなくても問題はありません。
アクセス制限の記述例
◇特定のホストからのアクセスを全て禁止するRewriteCond %{REMOTE_HOST} ^example.com$ [NC] RewriteRule ^.* - [F,L]
【解説】[F] は「Forbidden(アクセス禁止)」を意味し、[L] は「Last(処理が適用されたら終了)」を意味します。
パターン内では、特殊文字の前に逆スラッシュ(日本語環境では "\")を付加する事に注意してください。
RewriteCond %{REMOTE_HOST} ^example.com$ [NC, OR] RewriteCond %{REMOTE_ADDR} ^192.168.1. RewriteRule ^.* - [F,L]
【解説】"REMOTE_HOST" を取得できない可能性が有るときは、"REMOTE_ADDR" を併記してアクセス制限をかけます。
◇特定の Referer からのアクセスを全て禁止するRewriteCond %{HTTP_REFERER} ^http://www.example.com/bad.html$ [NC] RewriteRule ^.* - [F,L]◇特定の Referer 以外からのアクセスを全て禁止する(=特定の Referer からのみアクセスを全て許可する)
RewriteCond %{HTTP_REFERER} !^http://www.example.com/good.html$ [NC] RewriteRule ^.* - [F,L]◇直リンクを全て禁止する
RewriteCond %{HTTP_REFERER} !mydomain.com [NC] RewriteRule ^.* - [F,L]
【解説】Referer が "mydomain.com" を含まないリクエストに対して、全ての直リンクを禁止します。
◇画像の直リンクを禁止するRewriteCond %{HTTP_REFERER} !mydomain.com [NC] RewriteRule \.(jpg|png|gif)$ - [F,L]
【解説】Referer が "mydomain.com" を含まないリクエストに対して、拡張子が ".jpg" または ".png" または ".gif" への直リンクを禁止します。
◇特定のブラウザからのアクセスを全て禁止するRewriteCond %{HTTP_USER_AGENT} ^Mozilla/4.0 (compatible; MSIE 6.0)$ [NC] RewriteRule ^.* - [F,L]◇特定のホストの特定のブラウザからのアクセスを禁止する
RewriteCond %{REMOTE_HOST} ^example.com$ [NC] RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4.0 (compatible; MSIE 6.0)$ RewriteRule ^.* - [F,L]◇特定の検索ロボット(クローラ)に対して、"robots.txt" 以外のアクセスを禁止する
RewriteCond %{HTTP_USER_AGENT} Badbot-1 [NC, OR] RewriteCond %{HTTP_USER_AGENT} Badbot-2 [NC, OR] RewriteCond %{HTTP_USER_AGENT} Badbot-3 [NC, OR] RewriteCond %{HTTP_USER_AGENT} Badbot-n [NC] RewriteRule !^robots\.txt$ - [F,L]
【解説】"HTTP_USER_AGENT" が、 "Badbot-1", から "Badbot-n" の文字(文字の大小を区別しない)を含むクローラに対して、 "robots.txt" 以外のアクセスを禁止します。
この記述は、"robots.txt" の記述を無視したクローラのアクセスを完全に防ぎます。
*注 クローラのアクセス禁止は、エラーログを肥大させます。回避方法は、検索ロボット対策 をご覧ください。
お知らせ

コメント
このページに関する、ご感想やご質問をお寄せください。
お名前と都道府県名は、正確にお書きください。 - 泰山 -
まだコメントは有りません。