asher
V2EX  ›  问与答

Nginx 301跳转问题。需要访问旧域名 www.a.cn 跳转至新域名 www.a.com 。但访问旧域名的 www.a.cn/blog/ 时不跳转。

  •  
  •   asher · Mar 10, 2013 · 4086 views
    This topic created in 4841 days ago, the information mentioned may be changed or developed.
    6 replies    1970-01-01 08:00:00 +08:00
    BOYPT
        1
    BOYPT  
       Mar 10, 2013   ❤️ 1
    因为你写的规则不对。 以下可参考:

    server {
    server_name www.domain.com;
    return 301 $scheme://domain.com$request_uri;
    }
    asher
        2
    asher  
    OP
       Mar 11, 2013
    楼上这么写是啥意思啊?
    这样写的话就是全部跳转了
    nichan
        3
    nichan  
       Mar 11, 2013   ❤️ 1
    嗯哪啥……提问的艺术……
    这贴刚出来的时候我就看见了,但是……我也是以为lz说目前的情况是 “www.a.cn/blog/ 时不跳转,应该怎么设置才能全部跳转?”
    asher
        4
    asher  
    OP
       Mar 11, 2013
    @nichan
    作为菜鸟,全站跳转我知道,网上一搜挺多。
    现在就是需要访问 www.a.cn/blog/ 时不跳转,除此之外全站跳转。
    您一开始认为的是正确的。

    @BOYPT 的方式看起来是全站跳转吧?
    xiaop
        5
    xiaop  
       Mar 11, 2013
    目测楼主用的firefox?用其他浏览器如果还是不跳转的话,试试这段代码(nginx):
    if ($http_host !~ "^www\.a\.com$") {
    rewrite /(.*) http://www.quxizang.com/$1 permanent;
    break;
    }
    BOYPT
        6
    BOYPT  
       Mar 12, 2013
    @xiaop 根据Nginx PitFall, IF is Evil.

    所以这样会更好:

    server {
    server_name www.domain.com;
    location /blog/ {
    xxxxx; fastcgi_pass ....;
    }
    location / {
    return 301 $scheme://domain.com$request_uri;
    }
    }

    /blog/ 作为文本最长适配,会优先于/规则,其他则301跳转走。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5662 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 06:22 · PVG 14:22 · LAX 23:22 · JFK 02:22
    ♥ Do have faith in what you're doing.