当路径与文件同名时,htaccess重写不起作用

时间:2015-06-09 20:39:48

标签: php regex apache .htaccess mod-rewrite

我有一个奇怪的问题。以下是我的htaccess文件中URL重写的两个示例。第一个不起作用并返回变量" query"在PHP文件中为null。

RewriteRule ^search/([A-Za-z0-9-\s]+)$ search.php?query=$1

第二个(我用作测试)非常好。

RewriteRule ^foo/([A-Za-z0-9-\s]+)$ search.php?query=$1

我发现问题是模式的开头不能与我使用的php文件的名称相同。这一直对我有用,我现在才遇到这个问题,因为我已经搬到了新服务器。

是否存在导致此问题的某种设置?

1 个答案:

答案 0 :(得分:2)

您需要将此行置于.htaccess之上以关闭MultiViews选项:

Options -MultiViews

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