我有一个奇怪的问题。以下是我的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文件的名称相同。这一直对我有用,我现在才遇到这个问题,因为我已经搬到了新服务器。
是否存在导致此问题的某种设置?
答案 0 :(得分:2)
您需要将此行置于.htaccess之上以关闭MultiViews
选项:
Options -MultiViews
MultiViews
使用选项Apache's content negotiation module
在 mod_rewrite
之前运行,并使Apache服务器匹配文件扩展名。因此/file
可以在网址中,但它会投放/file.php
。