htaccess mod_rewrite没有在实时服务器上传递get变量

时间:2013-10-13 17:16:18

标签: .htaccess mod-rewrite

我为我的博客创建了一个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
(
)

有没有人有什么想法会导致这种情况?我试图让这个工作起来时遇到了太多奇怪的事情,任何建议都会受到赞赏

1 个答案:

答案 0 :(得分:8)

这是由于Apache中的Content Negotiation turned on my MultVIews选项。

将此行放在.htaccess之上以关闭MultiViews

Options +FollowSymLinks -MultiViews