mod_rewrite没有正确映射url

时间:2014-09-25 18:28:15

标签: php regex apache 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 个答案:

答案 0 :(得分:1)

这是由MultiViews选项引起的。在MultiViews之前运行的Apache's content negotiation module使用选项mod_rewrite,并使Apache服务器匹配文件扩展名。因此/file可以在网址中,但它会投放/file.php

在.htaccess开头使用此行禁用它:

Options -MultiViews