我正在尝试使用get参数创建RewriteRule。这是一个简单的例子,但仍然不起作用。
RewriteRule ^/?localhost/([0-9]+) test.php?id=$1 [QSA]
因此,如果我转到localhost/123
,我希望test.php脚本中的123
为$_GET
。
知道为什么会失败吗?所有其他“正常”RewriteRules都能很好地工作。
答案 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]
希望这有帮助。