我正在使用mod重写,但我的代码不起作用。它工作了一段时间。 我删除了代码。
的.htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^/(.*)/$ index.php?test=$1
PHP
<?php
var_dump($_GET['test']);
?>
如果我转到index.php
,则显示NULL
。
我不明白为什么它不再起作用了。我希望你能帮助我。
P.S。我已经通过使用.htaccess创建登录表单来测试.htaccess文件是否已加载。
答案 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