-1

我正在使用 mod rewrite,但我的代码不起作用。它工作了一段时间。我已经剥离了代码。

.htaccess

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

PHP

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

如果我去index.php它显示NULL

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

Ps 我已经通过使用.htaccess 制作登录表单来测试是否加载了.htaccess 文件。

4

2 回答 2

2

你需要去掉第一个斜线:

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

即使这样,您的规则也仅在您输入以正斜杠结尾的 url 时适用,例如:

/index.php/

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

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

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?test=$1
于 2012-09-14T15:09:15.710 回答
1

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

RewriteEngine On 
RewriteBase / 
RewriteRule ^(.*)/$ index.php?test=$1
于 2012-09-14T15:08:15.827 回答