我有这个重写规则......
将所有初始请求从world.example.com重定向到web.example.com
RewriteCond %{HTTP_HOST} ^world\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^(.*)$ https://web.example.com$1 [R=301,L]
哪个效果很好。但是,我的一些应用程序有......
https://world.example.com/approvals/?id=b47b5256567
不幸的是,它没有被正确地重定向到web.example.com。相反,它只是在没有查询参数的情况下访问web.example.com。
如何将所有请求与查询参数一起正确地重定向到web.example.com?
基本上,应该做什么......
https://world.example.com/approvals/?id=b47b5256567
then
https://web.example.com/approvals/?id=b47b5256567
只需将世界更改为网络并传递查询字符串。
帮助
答案 0 :(得分:5)
您不需要使用复杂的重写引擎来执行此操作。只需使用Redirect
:
<VirtualHost *>
ServerName world.example.com
Redirect permanent / https://web.example.com/
</VirtualHost>
Redirect
指令会自动保留您重定向后的所有内容。
答案 1 :(得分:1)
您忘记使用“查询字符串追加”标记[R=301,L,QSA]
。
答案 2 :(得分:0)
我们也可以使用Nginx。
server {
listen 80:
server_name: world.example.com
# URL redirect
#rewrite ^ http://web.example.com$request_uri? permanent;
rewrite ^ $scheme://web.example.com$request_uri permanent;
#rewrite ^ $scheme://web.example.com permanent;
#rewrite ^ $scheme://web.example.com;
}
参考: