Mod重写规则不起作用

时间:2012-09-14 15:06:22

标签: php .htaccess mod-rewrite rule

我正在使用mod重写,但我的代码不起作用。它工作了一段时间。 我删除了代码。

的.htaccess

RewriteEngine On 
RewriteBase / 
RewriteRule ^/(.*)/$ index.php?test=$1

PHP

<?php
var_dump($_GET['test']);
?>

如果我转到index.php,则显示NULL

我不明白为什么它不再起作用了。我希望你能帮助我。

P.S。我已经通过使用.htaccess创建登录表单来测试.htaccess文件是否已加载。

2 个答案:

答案 0 :(得分:2)

你需要摆脱第一个斜线:

RewriteRule ^(.*)/$ index.php?test=$1

即便如此,只有当您输入以正斜杠结尾的网址时,您的规则才会适用,例如:

/index.php/

如果您希望它与任何网址一起使用,您还需要删除最后一个斜杠:

RewriteRule ^(.*)$ index.php?test=$1

编辑:为避免重写现有文件和目录,您需要添加一些条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?test=$1

答案 1 :(得分:1)

您需要删除规则中的第一个斜杠

RewriteEngine On 
RewriteBase / 
RewriteRule ^(.*)/$ index.php?test=$1