特定のディレクトリ等でHTTP/1.0によるアクセスを遮断する方法 Apache2.4用
投稿日:
特定のディレクトリ(WordPressの管理画面など)に対するBotのアクセスを封じるためにはHTTP/1.0を使用したアクセスを遮断してしまうことが有効です(人間用のWEBブラウザはHTTP/1.1に対応しているので影響を受けません)。ここではApache2.4を使用している場合のHTTP/1.0によるアクセスを遮断する方法を解説します。もくじ
- 使用するもの・前提条件
- 設定の手順
- 設定内容の解説
使用するもの・前提条件
このページで解説する設定を行うためには、以下の条件を満たしている必要があります。
- 設定を行う人が設定対象ディレクトリにが「.htaccess」を配置し、それによって設定を変更できること
- 設定対象ディレクトリの「AllowOverride」ディレクティブで「FileInfo」の設定変更が許可されていること
- 「mod_setenvif」モジュールがロードされていること
設定の手順
まずは任意の(文字コードUTF-8(BOM無し)、改行コードLFを扱える)テキストエディタで以下の内容を打ち込み、「.htaccess」というファイル名で保存しましょう。
[VIM] SetEnvIf Request_URI “.*” hoge SetEnvIf Request_Protocol “HTTP/1.0” !hoge Require env hoge [/VIM]後はBotを弾きたいディレクトリに.htaccessをアップロードすればOKです。
設定内容の解説
今回作成した.htaccessはたった3行ですが、もちろん各行にはきちんと意味があります。
[VIM] SetEnvIf Request_URI “.*” hoge SetEnvIf Request_Protocol “HTTP/1.0” !hoge Require env hoge [/VIM]1行目の「SetEnvIf Request_URI “.*” hoge」は、「どのようなURLをリクエストしてきても「hoge」という環境変数をセットする」という意味のディレクティブです。無条件に環境変数をセットするのであれば「SetEnv」ディレクティブを使用したくなりますが、当方で実験したところ、「SetEnv」ディレクティブを使用してもうまく動きませんでした。なので「SetEnvIf」ディレクティブで強引に代用しています。
2行目の「SetEnvIf Request_Protocol “HTTP/1.0” !hoge」は、「アクセスに使用されているプロトコルがHTTP/1.0だったらセット済みの「hoge」という環境変数を取り除く」という意味のディレクティブです。
そして3行目の「Require env hoge」は、「「hoge」という環境変数がセットされていたらアクセスを許可し、そうでなければ拒否する」という意味のディレクティブです。
参考リンク