重写到一个新域名?用url查询?不工作:( 救命

时间:2009-08-28 01:29:29

标签: apache mod-rewrite rewrite

我有这个重写规则......

将所有初始请求从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

只需将世界更改为网络并传递查询字符串。

帮助

3 个答案:

答案 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;
}

参考: