我可以在htaccess中用一行regex附加或创建一个新的查询字符串吗



我正在尝试附加一个querystring参数,"q=1"到具有特定目录的URL。有些URL会有查询字符串,而另一些则不会。我目前的做法是写两条规则。如果有查询字符串变量,则首先处理;如果没有,则其他处理。有没有一种方法可以将下面的代码合并到一行?

RewriteRule ^/xyz/(.*)?(.*)  /zyz/$1?=$2&q=1 [NC,L]  
RewriteRule ^/zyz/(.*)  /zyz/$1?q=1 [NC,L]

您不需要捕获查询字符串(也不能从RewriteRule捕获)。只需使用QSA标志:

RewriteRule ^xyz/?$  /zyz/q=1 [NC,L,QSA]

QSA(查询字符串附加)标志在添加新查询参数时保留现有查询参数。


由于这是IIS而不是Apache,因此以下规则将起作用:

RewriteCond %{QUERY_STRING} !lq=1
RewriteRule ^/xyz/(.*)?(.*) /xyz/$1?q=1&$2 [NC,L]
RewriteCond %{QUERY_STRING} !lq=1
RewriteRule ^/xyz/(.*) /xyz/$1?q=1 [NC,L]

最新更新