带有GET参数的mod_rewrite

时间:2012-05-05 12:25:17

标签: php mod-rewrite get

我正在尝试使用get参数创建RewriteRule。这是一个简单的例子,但仍然不起作用。

RewriteRule ^/?localhost/([0-9]+) test.php?id=$1 [QSA]

因此,如果我转到localhost/123,我希望test.php脚本中的123$_GET

知道为什么会失败吗?所有其他“正常”RewriteRules都能很好地工作。

2 个答案:

答案 0 :(得分:2)

localhost是域名,不属于RewriteRule。我已将您的[QSA]更改为[L,QSA],因此不会执行进一步的规则。

RewriteRule ^([0-9]+) test.php?id=$1 [L,QSA]

如果需要对此进行限制,以便重写,如果域是localhost,那么您将使用RewriteCond,如:

RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^([0-9]+) test.php?id=$1 [L,QSA]

如果您只在开发中执行重写,但在部署到生产服务器时没有重写,那将非常有用。

答案 1 :(得分:0)

试试这个:

RewriteBase /localhost
RewriteRule ^(\d+)$ test.php?id=$1 [QSA]

\ d代表[0-9]

希望这有帮助。