Apache:如何使用 .htaccess 重定向 OPTIONS 请求?

Apache:如何使用 .htaccess 重定向 OPTIONS 请求?

我的 Apache 2.2.4 服务器在 access_log 中有很多类似这样的消息:

::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 及更早版本中,在某些配置下,这些请求可能会触及重量级的动态网页并导致服务器不必要的负载。您可以使用 mod_rewrite 在使用该特定用户代理或 IP 地址访问时以重定向进行响应来避免这种情况。

好吧,显然我不能使用 UserAgent,因为我最小化了服务器签名,但我可以使用 IP 地址。但是,我不知道 RewriteCond 和 RewriteRule 应该如何查找 IPv6 地址 ::1。

运行此程序的网站使用 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 上的本地主机访问网站,所以这个功能很好。

答案1

RewriteCond %{REMOTE_HOST} ^::1$
RewriteRule  ^OPTIONS  http://www.google.com/  [L]

这是我最好的猜测,我确信RewriteCond,但并不完全是RewriteRule

它将匹配现有内容REMOTE_HOST,然后重写对以www.google.com::1开头的任何 URL 的请求OPTIONS

相关内容