0

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

/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问题是有一个名为 的文件xml.php,作为我规则的第一部分。事实上,如果我将规则更改为:

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

我指出:

/asd/doSomething?arg=value

我被正确重定向到:

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

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

4

1 回答 1

0

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

多视图搜索由MultiViews Options. 如果服务器收到请求/some/dir/foo并且/some/dir/foo存在,则服务器读取目录查找所有名为foo.*

这只是解释了为什么我的规则不起作用。

于 2012-07-11T07:44:03.760 回答