我目前在.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/
提前感谢您的帮助。
答案 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]