我正在尝试将查询字符串重定向到非查询URL。看起来像这样。
原始
http://searchtest.help.org/search?client=Cool_Sub&site=Cool_Sub&proxystylesheet=Cool_Sub&q=stackoverflow
预期结果
https://searchtest.help.org/cool-search/stackoverflow
我只想获取查询的最后一部分。在这种情况下 stackoverflow 。
这部分永远是静态的。
search?client = Cool_Sub&site = Cool_Sub&proxystylesheet = Cool_Sub&q =
我正在我的apache虚拟主机中使用它
RewriteEngine On
RewriteCond %{REQUEST_URI} ^\/search$
RewriteCond %{QUERY_STRING} ^client=Cool_Sub&site=Cool_Sub&proxystylesheet=Cool_Sub&q=(.*)
RewriteRule ^(.*)$ https://searchtest.help.org/cool-search/%1 [R=301,L]
但是结果是
https://searchtest.help.org/cool-search/stackoverflow?client=Cool_Sub&site=Cool_Sub&proxystylesheet=Cool_Sub&q=stackoverflow
我尝试了上述规则的许多变体,但没有骰子。任何帮助将不胜感激。
答案 0 :(得分:0)
将QSD
标志添加到您的RewriteRule
RewriteRule ^(.*)$ https://searchtest.help.org/cool-search/%1 [R=301,QSD,L]
根据Apache 2.4文档:
当请求的URI包含查询字符串和目标URI时 不会,RewriteRule的默认行为是复制该查询 目标URI的字符串。使用[QSD]标志会导致查询字符串 被丢弃。