长期读者,第一次海报。
我有一些在虚拟主机上下文中可以正常工作的重写规则,但是我无法在服务器配置上下文中应用它,我想这样做它适用于所有虚拟主机。
指令:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/?cgi-sys/defaultwebpage\.cgi$ / [R=301,L]
</IfModule>
我已经尝试改变它以不强制执行开始和结束:
RewriteRule cgi-sys/defaultwebpage\.cgi / [R=301,L]
但我无法触发它。
我错过了什么?
的Apache / 2.2.13
正如评论中所述,用户正在输入:
http://www.example.com/cgi-sys/defaultwebpage.cgi
以下日志条目结果:
203.4.5.6 - - [05/Apr/2011:10:23:16 +1000] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.1" 200 26 "-"
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko)
Version/5.0.4 Safari/533.20.27"
现在,有问题的网站有一个带有此规则的.htaccess文件,我认为该文件正在拦截此请求:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
我暂时禁用了该指令,然后apache只服务了一个香草404:
203.45.73.63 - - [05/Apr/2011:10:27:28 +1000] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.1" 404 - "-"
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko)
Version/5.0.4 Safari/533.20.27"
答案 0 :(得分:0)
我理解你的规则:
客户端通过重写最后一条规则,将example.com/cgi-sys/defaultwebpage.cgi
规则匹配并重定向到/
,并指向index.php
。
文件example.com/index.php
是否存在?
答案 1 :(得分:0)
当然,您在执行此操作后重新加载了服务器配置文件?您不必使用每个目录规则,但是您可以在此处执行。