我可以在htaccess中使用一行正则表达式追加或创建一个新的查询字符串

时间:2015-02-26 22:19:30

标签: regex .htaccess

我正在尝试追加一个查询字符串参数, “q = 1”到具有特定目录的URL。一些URL会有其他人不会的查询字符串。我目前的做法是编写2条规则。如果有查询字符串变量,则首先进行处理,否则进行其他进程。有没有办法可以在一行中合并以下代码?

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

1 个答案:

答案 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]