2014-09-25 45 views
1

我使用mod_rewrite收拾我的网址mod_rewrite的未映网址正确

有一个规则转换为以下几点:

RewriteEngine On 
RewriteRule ^search/([^/]*)/([^/]*)$   /search?type=$1&query=$2 [L] 

/search?type=title&query=me 
/search/title/me 

然而,这并不工作,当我去上述网址/search/title/me我不能得到的参数typequery

如果我改变重写规则

RewriteRule ^search2/([^/]*)/([^/]*)$   /search?type=$1&query=$2 [L] 

它工作正常,我能够得到所有的参数。 我不明白这是如何发生的。

请帮助我!

回答

1

这是由于MultiViews选项。选项MultiViewsApache's content negotiation module使用,它在mod_rewrite之前运行,并且使Apache服务器匹配文件扩展名。所以/file可以在URL中,但它将服务/file.php

通过这条线在你的.htaccess开始禁用它:

Options -MultiViews 
+0

我加入这个在.htaccess文件的开始,现在我得到找不到网页错误 – 2014-09-25 18:38:10

+0

这是唯一的规则' RewriteRule^search /([^ /] *)/([^ /] *)$/search?type = $ 1&query = $ 2 [L]'?并且是'/ search /'目录? – anubhava 2014-09-25 18:40:21

+0

这是唯一的规则,我只有3行在.htaccess文件,并没有文件夹被称为搜索 – 2014-09-25 18:43:18