【问题标题】:Nginx rewrite - only redirect to one domainNginx 重写 - 只重定向到一个域
【发布时间】:2012-02-26 08:08:07
【问题描述】:

我希望将所有匹配 http://s.domain.com 的请求重定向到 http://domain-new.com

我有以下内容,它似乎将所有请求重定向到第二个域。我只想在完全匹配时重定向。

 if ($request_uri ~ "s.domain.com"){
       rewrite ^ http://domain-new.com;
     }

【问题讨论】:

    标签: url redirect nginx


    【解决方案1】:

    您可以为子域创建一个服务器块并将其重定向到新域

    server {
        listen 80;
        server_name s.domain.com;
        rewrite ^ http://domain-new.com$request_uri? permanent;
    }
    

    这应该只适用于重定向索引:

    server {
        listen 80;
        server_name s.domain.com;
        # for index.xyz pages
        location ~ ^/index\..+$ {
            rewrite ^ http://domain-new.com$request_uri? permanent;
        }
        # for pages with index left out
        location / {
            rewrite ^/$ http://domain-new.com permanent;
        }
    }
    

    【讨论】:

    • 谢谢@Dayo 对不起,我没有提到子域一起在不同的平台上(IIS / ColdFusion)。我怎样才能做到这一点?
    • 我明白了。在这种情况下,您通常需要将重定向规则添加到它所在的平台。 nginx和其他平台是在同一台服务器上吗?
    • 服务器位于不同的位置。 1. IIS / Windows 在单独的 IP 和 2. NGINX 在另一个 IP。我认为通过在 s.domain.com 上寻找完全匹配的内容,我朝着正确的方向前进,但它没有按预期工作。我也知道我可以用一个简单的 js 脚本来做到这一点,但觉得做这个服务器端是最好的方法。我正在尝试学习 nginx :)
    • 在这种情况下,这不是 nginx 问题,而是 IIS 问题。你想问的是如何在 IIS 上重定向。如果子域位于不同机器和 IP 上的 IIS 上,则对该子域的任何请求都将到达该不同机器。我相信你可以想象到,在 Nginx 机器上添加与该子域相关的任何指令都无法正常工作。
    • 谢谢,但我可能没有正确解释,因为我有点困惑。如果 s.domain.com 指向 nginx 服务器,我怎么能将所有到 s.domain.com 的请求路由到另一个域。所有进入 domain-new.com 的请求都得到了正确处理。我只想将 s.domain.com (NGINX) 上的索引重定向到 domain-new.com (IIS)
    猜你喜欢
    • 1970-01-01
    • 2020-11-23
    • 2011-03-02
    • 2018-09-13
    • 1970-01-01
    • 2020-09-03
    • 2017-04-04
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多