.htaccess第二个RewriteRule注意工作

时间:2019-01-12 19:45:46

标签: .htaccess mod-rewrite

我有一个example.com/new/info.php?title=example之类的PHP页面。 .htaccess在文件夹/new/中。我也在主目录中尝试过。我的.htaccess看起来像这样:

ErrorDocument 404 /404.php

RewriteEngine On

RewriteRule ^([a-zA-Z0-9_-]+)$ page.php?title=$1 [QSA,L,NC]

RewriteRule ^info/([a-zA-Z0-9_-]+)/$ info.php?title=$1 [QSA,L,NC]

第一个规则正在运行,但是第二个规则未向服务器发送GET['title']。站点info.php已加载,但没有该变量。我已经在本地主机上对其进行了测试,并且可以正常工作。我将其加载到我的网站空间上,第二条规则不起作用。

我也尝试了没有新目录example.com/info.php?title=example的情况,但同样没有用。

我怎么了?

1 个答案:

答案 0 :(得分:0)

听起来您已启用MultiViews(可能在服务器配置中)。您需要禁用MultiViews才能正常工作。在.htaccess文件的顶部添加以下内容:

Options -MultiViews

启用MultiViews后,在对info.php发出请求时,mod_negotiation将对/info/example/发出内部子请求-在处理mod_rewrite规则之前,因此不会传递任何参数。