Nginx的301 oldsite重定向到newsite

问题描述 投票:1回答:1

下面的网址和他们的头状态代码。请注意,重定向是否发生了。但在某些情况下,我看到301头和某些情况下,我无法看到。

https://www.oldsite.com -> 301 found in header
https://oldsite.com -> 301 found in header
http://www.oldsite.com -> No 301 found in header
http://oldsite.com -> No 301 found in header

https://www.newsite.com - Target site
https://newsite.com -> 302 found in header
http://www.newsite.com -> No 301 found in header
http://newsite.com -> No 301 found in header

我有四个配置如下所述。这有什么不对任何这些配置。请注意,这是一个Magento站点。

oldsite.com.nginx.conf

server {
    listen      ipaddress:80;
    server_name oldsite.com www.oldsite.com;
    root        /home/oldsite/web/oldsite.com/public_html;
    index       index.php index.html index.htm;

location / {
 return 301 https://www.newsite.com$request_uri; 
}
    include     /home/oldsite/conf/web/nginx.oldsite.com.conf*;
}

oldsite.com.nginx.ssl.conf

server {
    listen      ipaddress:443;
    server_name oldsite.com www.oldsite.com;
    root        /home/oldsite/web/oldsite.com/public_html;
    index       index.php index.html index.htm;

    ssl         on;
    ssl_certificate      /home/oldsite/conf/web/ssl.oldsite.com.pem;
    ssl_certificate_key  /home/oldsite/conf/web/ssl.oldsite.com.key;

location / {
 return 301 https://www.newsite.com$request_uri; 
}

newsite.com.nginx.conf

server {
    listen      ipaddress:80;
return 301 https://www.newsite.com$request_uri; 
    server_name newsite.com www.newsite.com;

    root        /home/newsite/web/newsite.com/public_html/pub;
    index       index.php;
    autoindex   off;
    charset     UTF-8;
    error_page  404 403 = /errors/404.php;
    add_header  "X-UA-Compatible" "IE=Edge";

}

newsite.com.nginx.ssl.conf

server {
    listen      ipaddress:443 http2;
    server_name newsite.com www.newsite.com;

    root        /home/newsite/web/newsite.com/public_html/pub;
    index       index.php;
    autoindex   off;
    charset     UTF-8;
    error_page  404 403 = /errors/404.php;
    add_header  "X-UA-Compatible" "IE=Edge";

    ssl         on;
    ssl_certificate      /home/newsite/conf/web/ssl.newsite.com.pem;
    ssl_certificate_key  /home/newsite/conf/web/ssl.newsite.com.key;

}
magento nginx redirect http-status-code-301
1个回答
1
投票

为了处理example.comwww.example.com不同,你应该将现有的server块一分为二,并把所需的return声明为其中之一。

例如:

server {
    listen      443 ssl http2;
    server_name example.com;

    ssl_certificate      /home/newsite/conf/web/ssl.newsite.com.pem;
    ssl_certificate_key  /home/newsite/conf/web/ssl.newsite.com.key;

    return 301 https://www.newsite.com$request_uri;
}

server {
    listen      443 ssl http2;
    server_name www.example.com;

    ssl_certificate      /home/newsite/conf/web/ssl.newsite.com.pem;
    ssl_certificate_key  /home/newsite/conf/web/ssl.newsite.com.key;

    root        /home/newsite/web/newsite.com/public_html/pub;
    index       index.php;
    autoindex   off;
    charset     UTF-8;
    error_page  404 403 = /errors/404.php;
    add_header  "X-UA-Compatible" "IE=Edge";

    ...
    ...
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.