V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
python30
V2EX  ›  程序员

问个 nginx 配置里面的 域名跳转 301 问题

  •  
  •   python30 · 2020-11-17 22:45:45 +08:00 · 1787 次点击
    这是一个创建于 1467 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问个 nginx 配置里面的 域名跳转 301 问题

    想把 www.qqq.com 全部永久 301 重定向到 www.aaa.com 下面是我的 nginx 里面的配置。我下面的代码不成功。不知道正确的怎么实现呢?

    server {
            listen 443 ssl;
            server_name www.qqq.com qqq.com;
            ssl_certificate 1_www.qqq.com_bundle.crt;
            ssl_certificate_key 2_www.qqq.com.key;
            ssl_session_timeout 5m;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
            ssl_prefer_server_ciphers on;
            charset UTF-8;
    
            client_max_body_size 75M;
            fastcgi_buffers   8 128k;
            fastcgi_busy_buffers_size 128k;
    
    
            location / {
                    include uwsgi_params;
                    uwsgi_pass 127.0.0.1:12008;
                    uwsgi_send_timeout 300;
                    uwsgi_connect_timeout 300;
                    uwsgi_read_timeout 300;
            }
            location /static {
                    expires 30d;
                    autoindex on;
                    #return 403;
                    add_header Cache-Control private;
                    alias /www/www/html/qqq/static/;
            }
            location /media {
                    expires 30d;
                    autoindex on;
                    #return 403;
                    add_header Cache-Control private;
                    alias /www/www/html/qqq/media/;
            }
       }
    
    erver{
            listen 80;
            server_name www.qqq.com qqq.com;
            rewrite ^(.*) https://www.aaa.com$1 permanent;
        }
    
    10 条回复    2020-11-18 10:55:24 +08:00
    Yakir
        1
    Yakir  
       2020-11-17 22:59:46 +08:00
    rewrite ^(.*) https://www.aaa.com$1 permanent; 改成 rewrite ^/(.*) https://www.aaa.com/$1 permanent; 试下
    另外第二个 server 少了一个 s,确定 reload 没有报错吗
    dorothyREN
        2
    dorothyREN  
       2020-11-17 23:18:31 +08:00
    直接 return 301 www.aaa.com
    python30
        3
    python30  
    OP
       2020-11-17 23:47:33 +08:00
    @Yakir 确实是 那个 server 少了个 s 的问题。现在能跳了
    还有就是怎么设置 https 也一起跳?
    现在只能 http 的跳过去。https 还是原来的网址

    还有一个问题。我以前好像设置过。记得 rewrite 301 什么的
    不知道这个上面这样是不是永久 301 重定向的?
    python30
        4
    python30  
    OP
       2020-11-17 23:49:28 +08:00
    @dorothyREN
    不只是只有主域名。还有里面的一些目录也一起跳。
    python30
        5
    python30  
    OP
       2020-11-17 23:51:04 +08:00
    @Yakir
    这样写还有个问题
    就是目录跳转的时候 少了个 /
    比如:www.qqq.com/aaa/bbb 跳过去 www.aaa.comaaa/bbb 少了 com 后面的 /
    bin456789
        6
    bin456789  
       2020-11-18 00:04:31 +08:00
    if ($http_host = www.qqq.com) {
    return 301 https://www.aaa.com$request_uri;
    }
    ysc3839
        7
    ysc3839  
       2020-11-18 08:11:16 +08:00 via Android
    quanjw
        8
    quanjw  
       2020-11-18 09:24:00 +08:00
    分两个 server 直接 301
    doveyoung
        9
    doveyoung  
       2020-11-18 10:15:16 +08:00
    80 和 443 端口的配置下面分别都要有 301

    另外 nginx 官网建议使用 301 而不是 rewrite,当然 rewrite 也可以
    python30
        10
    python30  
    OP
       2020-11-18 10:55:24 +08:00
    这样能跳转了。分别在两个 server 里面添加了:
    return 301 https://www.aaa.com$request_uri;

    测试止录也能跳
    这样是永久 301 吧
    不知道对 seo 有利不



    ```
    server {
    listen 443 ssl;
    server_name www.qqq.com qqq.com;
    ssl_certificate 1_www.qqq.com_bundle.crt;
    ssl_certificate_key 2_www.qqq.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    charset UTF-8;

    client_max_body_size 75M;
    fastcgi_buffers 8 128k;
    fastcgi_busy_buffers_size 128k;

    return 301 https://www.aaa.com$request_uri;


    location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:12008;
    uwsgi_send_timeout 300;
    uwsgi_connect_timeout 300;
    uwsgi_read_timeout 300;
    }
    location /static {
    expires 30d;
    autoindex on;
    #return 403;
    add_header Cache-Control private;
    alias /www/www/html/qqq/static/;
    }
    location /media {
    expires 30d;
    autoindex on;
    #return 403;
    add_header Cache-Control private;
    alias /www/www/html/qqq/media/;
    }
    }

    server{
    listen 80;
    server_name www.qqq.com qqq.com;
    return 301 https://www.aaa.com$request_uri;
    }
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:17 · PVG 06:17 · LAX 14:17 · JFK 17:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.