我想重定向所有请求,例如:
/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文件的存在会如何破坏它?
答案 0 :(得分:0)
Options MultiViews
。我不知道这个选项:
MultiViews Options
启用了MultiViews搜索。如果服务器收到/some/dir/foo
请求且/some/dir/foo
不,则服务器会读取目录,查找名为foo.*
的所有文件
这简单地解释了为什么我的规则不起作用。