我为我的博客创建了一个mod_rewrite规则,该规则在我的本地服务器上运行,但是当我上传到我的实时服务器时,它没有传递$ _GET变量。我已经设法将问题分解为最简单的形式。这是mod_rewrite:
RewriteEngine on
RewriteRule ^test/([^/\.]+)$ test.php?var=$1 [QSA]
文件test.php位于网站的根目录中,其中只包含以下代码:
echo '<pre>';
print_r($_GET);
echo '</pre>';
所以当我在本地服务器上访问mysite.co.uk/test/hello时,我正在
Array
(
[var] => hello
)
正如我所料。但是当我尝试我的实时网站时,我仍然被重定向到我的test.php页面,只是没有$ _GET变量:
Array
(
)
有没有人有什么想法会导致这种情况?我试图让这个工作起来时遇到了太多奇怪的事情,任何建议都会受到赞赏
答案 0 :(得分:8)
这是由于Apache中的Content Negotiation
turned on my MultVIews
选项。
将此行放在.htaccess
之上以关闭MultiViews
:
Options +FollowSymLinks -MultiViews