我有一个网站,我成功使用以下网址重写:
RewriteRule ^(.*)_r-(.*)/calculator.html$ /calcadd.php?rest_id=$1 [L]
随着我的网站不断发展,我认为能够将一些额外的参数传递给此页面会很有帮助。所以我尝试更新url以在.html之后包含一个变量。这是我试过的:
RewriteRule ^(.*)_r-(.*)/calculator.html?ids=(.*)$ /calcadd.php?rest_id=$1&ids=$3 [L]
这不起作用,我找不到页面错误。并且万一它不清楚,这不是mod_rewrite没有启用或任何问题。我所有的其他重写工作都很好,因此启用了mod_rewrite,允许覆盖为ALL等等。
谢谢!
答案 0 :(得分:2)
这里只需要一个QSA
标记,以便在添加新查询参数时保留原始查询:
RewriteRule ^(.*)_r-(.*)/calculator\.html$ /calcadd.php?rest_id=$1 [L,NC,QSA]
另请注意,您无法匹配RewriteRule
中的查询字符串。
答案 1 :(得分:0)
默认情况下,RewriteRule
仅考虑请求的网址而不使用查询字符串。您需要RewriteCond
来实现您想要的目标:
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*)_r-(.*)/calculator.html$ /calcadd.php?rest_id=$1&%1 [L]
未经测试。
使用%1
,%2
等,您可以在RewriteCond
的{{1}}语句中注入与对应的括号模式匹配的模式。
答案 2 :(得分:0)
保持原样并使用它。 QSA
标志表示查询字符串追加。它将自动将查询sting添加到重写结束。
RewriteRule ^(.*)_r-(.*)/calculator.html$ /calcadd.php?rest_id=$1 [QSA,L]