Nginx下301重定向域名的方法
编辑/usr/local/nginx/conf下的nginx.conf,在server部分server_name
下边添加或修改,如果是ssl,则在https部分的server的server_name
下边添加或修改:
方法一:所有绑定域名跳转到指定域名,可用于旧域名跳转到新域名,不带www的网址跳转到带www的网址
server { listen 80; server_name www.tddx.net tddx.net; if ($host != 'www.tddx.net') { return 301 http://www.tddx.net$request_uri; } }
PS:如果不加 if 判断则会导致不断重定向,从而无法访问。
方法二:非指定域名都跳转到另一个指定域名
如果不是test.tddx.net域名,都跳转到指定域名
server { listen 80; server_name www.tddx.net tddx.net test.tddx.net; if ($host != 'test.tddx.net' ) { rewrite ^/(.*)$ https://www.tddx.net/$1 permanent; } }
PS:跳至的域名不能在 server_name 列表中,否则会陷入无限重定向中
方法三:不带www的https跳转到带www的https,添加在监听443端口的server位置
在https的server部分的server_name下边添加
server { listen 443 ssl http2; #listen [::]:443 ssl http2; server_name www.tddx.net tddx.net; if ($host = 'tddx.net') { return 301 https://www.tddx.net$request_uri; } }
方法四:http跳转到https,添加在监听80端口的server位置
server { listen 80; server_name www.tddx.net tddx.net; return 301 https://www.tddx.net$request_uri; }
示例(部分代码):除了www.tddx.net外的所有域名都跳转到带https的域名上
server { server_name www.tddx.net tddx.net; if ($host != 'www.tddx.net' ) { rewrite ^/(.*)$ https://www.tddx.net/$1 permanent; } ... }提示:如果是想让http强制跳转到https,把里面的http换成https就行。