V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
asher
V2EX  ›  问与答

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

  •  
  •   asher · 2013-03-10 20:42:07 +08:00 · 3660 次点击
    这是一个创建于 4283 天前的主题,其中的信息可能已经有所发展或是发生改变。
    6 条回复    1970-01-01 08:00:00 +08:00
    BOYPT
        1
    BOYPT  
       2013-03-10 22:10:51 +08:00   ❤️ 1
    因为你写的规则不对。 以下可参考:

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

    @BOYPT 的方式看起来是全站跳转吧?
    xiaop
        5
    xiaop  
       2013-03-11 20:36:41 +08:00
    目测楼主用的firefox?用其他浏览器如果还是不跳转的话,试试这段代码(nginx):
    if ($http_host !~ "^www\.a\.com$") {
    rewrite /(.*) http://www.quxizang.com/$1 permanent;
    break;
    }
    BOYPT
        6
    BOYPT  
       2013-03-12 09:16:05 +08:00
    @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跳转走。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2858 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:31 · PVG 20:31 · LAX 04:31 · JFK 07:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.