如果PHP文件被命名为重写模式,则mod_rewrite规则被破坏

时间:2012-07-11 07:03:55

标签: apache mod-rewrite url-rewriting

我想重定向所有请求,例如:

/xml/doSomething?arg=value

要:

/xml.php?action=doSomething&arg=value

我尝试了这个简单的规则:

RewriteEngine
RewriteBase /
RewriteRule ^xml/([^/]+)[/]? xml.php?action=$1 [R=302,L,QSA]

但它不起作用。 xml.php仅使用arg=value param执行。问题是,有一个名为xml.php的文件,作为我规则的第一部分。事实上,如果我将规则更改为:

RewriteRule ^asd/([^/]+)[/]? xml.php?action=$1 [R=302,L,QSA]

我指出:

/asd/doSomething?arg=value

我被正确地重定向到:

/xml.php?action=doSomething&arg=value

如果一个名为我的重写模式的第一部分的PHP文件的存在会如何破坏它?

1 个答案:

答案 0 :(得分:0)

我解决了。问题是我的虚拟主机配置中有Options MultiViews。我不知道这个选项:

  

MultiViews Options启用了MultiViews搜索。如果服务器收到/some/dir/foo请求且/some/dir/foo ,则服务器会读取目录,查找名为foo.*的所有文件

这简单地解释了为什么我的规则不起作用。