Apache 仅重定向查询的一部分
Posted
技术标签:
【中文标题】Apache 仅重定向查询的一部分【英文标题】:Apache redirect only part of a query 【发布时间】:2019-02-28 05:43:14 【问题描述】:我正在尝试将查询字符串重定向到非查询 url。它看起来像这样。
原创
http://searchtest.help.org/search?client=Cool_Sub&site=Cool_Sub&proxystylesheet=Cool_Sub&q=***
预期结果
https://searchtest.help.org/cool-search/***
我只想获取查询的最后一部分。在这种情况下 ***。
这部分将永远是静态的。
search?client=Cool_Sub&site=Cool_Sub&proxystylesheet=Cool_Sub&q=
我在我的 apache vhost 中使用它
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/***?client=Cool_Sub&site=Cool_Sub&proxystylesheet=Cool_Sub&q=***
我已经尝试了上述规则的许多变体,但没有骰子。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:将QSD
标志添加到您的 RewriteRule
RewriteRule ^(.*)$ https://searchtest.help.org/cool-search/%1 [R=301,QSD,L]
根据 Apache 2.4 文档:
当请求的 URI 包含查询字符串,并且目标 URI 没有,RewriteRule 的默认行为是复制该查询 字符串到目标 URI。使用 [QSD] 标志会导致查询字符串 被丢弃。
【讨论】:
以上是关于Apache 仅重定向查询的一部分的主要内容,如果未能解决你的问题,请参考以下文章