我正在尝试追加一个查询字符串参数, “q = 1”到具有特定目录的URL。一些URL会有其他人不会的查询字符串。我目前的做法是编写2条规则。如果有查询字符串变量,则首先进行处理,否则进行其他进程。有没有办法可以在一行中合并以下代码?
RewriteRule ^/xyz/(.*)?(.*) /zyz/$1?=$2&q=1 [NC,L]
RewriteRule ^/zyz/(.*) /zyz/$1?q=1 [NC,L]
答案 0 :(得分:2)
您不需要捕获查询字符串(并且您不能来自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]