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