尝试将带有查询字符串的网址重定向到子域名,但无法使其生效。
目标是让www.example.com/services/json?method=views.get
成为old.example.com/services/json?method=views.get
我在.htaccess
文件中:
RedirectMatch 301 ^www\.example\.com/services/json$ http://old.example.com/services/json$1
在Chrome中,它只停留在www域。
在Firefox中,它失败一次,说" Firefox检测到服务器正在以永远不会完成的方式重定向该地址的请求。"但是,如果我点击Try Again,它就会很好地进入子域。
这令人愤怒,任何帮助都表示赞赏。我尝试了几种不同的模式。
谢谢!
此外,查询字符串中有双引号。是否可以保留它们而不将它们编码为%2522
?
答案 0 :(得分:4)
试试这个:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://old.example.com/$1 [R=301,L]
答案 1 :(得分:1)
我想出来了。以下是我为实现目标所做的工作:
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^services/json(.*)$ http://old.example.com/services/json$1 [NE,L,R=301]
现在一切都很完美。
规则末尾的NE标记会根据需要在查询字符串中保留双引号,并且不对它们进行编码。