Mod rewrite 在服务器配置上下文中获取mod_write规则以应用于所有站点

Mod rewrite 在服务器配置上下文中获取mod_write规则以应用于所有站点,mod-rewrite,apache2,Mod Rewrite,Apache2,长期读者,第一次海报 我有一些重写规则可以在virtualhost上下文中正常工作,但我无法在服务器配置上下文中应用这些规则,我希望这样做,因为它们适用于所有虚拟主机 指令: <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/?cgi-sys/defaultwebpage\.cgi$ / [R=301,L] </IfModule> 但我不能触发它 我错过了什么 Apache/2.2.13 如评论中所述,用户正

长期读者,第一次海报

我有一些重写规则可以在virtualhost上下文中正常工作,但我无法在服务器配置上下文中应用这些规则,我希望这样做,因为它们适用于所有虚拟主机

指令:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/?cgi-sys/defaultwebpage\.cgi$ / [R=301,L]
</IfModule>
但我不能触发它

我错过了什么

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"

就我对你的规则的理解:

客户端写入
example.com/cgi sys/defaultwebpage.cgi
规则匹配并重定向到
,该规则将通过重写最后一条规则指向
index.php


文件
example.com/index.php
存在吗?

当然,完成此操作后,您重新加载了服务器配置文件?您不必输入每个目录规则,但您可以在这里输入。

您可以提供完整URL的示例吗请->客户端类型是什么,客户端看到了什么,为客户端提供了什么文件?客户端类型和客户端收到404错误。用一些进一步的信息和示例更新了问题。谢谢。但是规则的特点是[R=301],所以应该被重定向,[L]意味着不应该处理更多的规则。如果我查询第一个请求的标题,我会得到“HTTP/1.1 200 OK”,因此第一个重写规则似乎没有被处理。[L]阻止应用其他规则,但不会避免在broser请求新页面(使用重写的URL)时再次运行规则,但我永远不会得到重写的URL,因为我收到了200,不是301。
 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"