我正在尝试附加一个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]