web-dev-qa-db-ja.com

Apache:.htaccessでOPTIONSリクエストをリダイレクトする方法は?

Access_logに次のようなメッセージがたくさんあるApache2.2.4サーバーがあります。

::1 - - [15/May/2010:19:55:01 +0200] "OPTIONS * HTTP/1.0" 400 543
::1 - - [15/May/2010:20:22:17 +0200] "OPTIONS * HTTP/1.0" 400 543
::1 - - [15/May/2010:20:24:58 +0200] "OPTIONS * HTTP/1.0" 400 543
::1 - - [15/May/2010:20:25:55 +0200] "OPTIONS * HTTP/1.0" 400 543
::1 - - [15/May/2010:20:27:14 +0200] "OPTIONS * HTTP/1.0" 400 543

このページで説明されている「内部ダミー接続」は次のとおりです。

http://wiki.Apache.org/httpd/InternalDummyConnection

このページも私の主な問題にぶつかります。「2.2.6以前では、特定の構成では、これらのリクエストが重い動的Webページにぶつかり、サーバーに不要な負荷がかかる可能性があります。その特定のユーザーエージェントまたはIPアドレスでアクセスされたときにmod_rewriteを使用してリダイレクトで応答することにより、これを回避します。 "

サーバーの署名を最小化したため、明らかにUserAgentは使用できませんが、IPアドレスは使用できます。ただし、RewriteCondとRewriteRuleがIPv6アドレス:: 1を探す必要があるかどうかはわかりません。

これが実行されているWebサイトはCodeIgniterを使用しているため、次の.htaccessが既に配置されているので、追加する必要があります。

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ /index.php?/$1 [G]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

この.htaccessルールを作成する方法はありますか?

解決済み:別のルールを追加すると、OPTIONSが現在のルールに該当し、Apacheがデフォルトで実行するのと同じ方法で処理されます。

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ /index.php?/$1 [G]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REMOTE_Host} !^::1$
RewriteRule ^(.*)$ /index.php?/$1 [L]

IPv6のローカルホスト経由でWebサイトにアクセスすることはないので、これはうまく機能します。

3
Milan Babuškov
RewriteCond %{REMOTE_Host} ^::1$
RewriteRule  ^OPTIONS  http://www.google.com/  [L]

それが私の最善の推測です。私はRewriteCondを確信していますが、RewriteRuleについては完全ではありません。

REMOTE_Host::1である場合に一致し、OPTIONSで始まるURLのリクエストをwww.google.comに書き換えます。

2
cpbills