使用查询字符串将URL重定向到具有相同查询字符串的新URL

时间:2012-12-20 21:44:21

标签: apache .htaccess

我目前在.htaccess文件中有以下内容,将所有请求重定向到网站的SSL版本:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteRule ^(.*) https://www.mydomain.com$1 [R=301,nc]

现在,我想将调用重定向到我当前的根URL - 只有当它附加了查询字符串 - 才能将调用重定向到具有相同查询字符串的新网址。例如:

https://www.mydomain.com/?foo=bar重定向到:

https://www.mydomain.com/new_mapping/?foo=bar

而没有查询字符串的请求继续转到https://www.mydomain.com/

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用RewriteCond将非空查询字符串与.+匹配,并使用[QSA]重写

RewriteEngine On
# If the querystring has at least 1 character
RewriteCond %{QUERY_STRING} ^.+
# Rewrite requests to the root 
RewriteRule ^/?$ new_mapping [L,QSA]

如果您想实际重定向浏览器以显示新网址,请使用[R=301]。从技术上讲,[QSA]不是必需的,因为查询字符串会自动附加到重定向中。

RewriteRule ^/?$ new_mapping [L,R=301,QSA]