Nginx服务器中HTTP 301跳转到带www的域名的方法

<返回列表

从nginx的官方文档 documentation, 正确的nginx https 301跳转到带www域名方法的方法如下:

HTTP 301跳转到带www域名方法

?

复制代码 代码如下: server { ? ? ? ?listen ? ? ? 80; ? ? ? ?server_name ?XXX.org; ? ? ? ?return ? ? ? 301 http://www.XXX.org$request_uri; ? ?}

? ?server { ? ? ? ?listen ? ? ? 80; ? ? ? ?server_name ?www.XXX.org; ? ? ? ?... ? ?} ?

HTTPS 301跳转到带www域名方法

复制代码 代码如下: ? server { ? ? ? ? ? ?listen 80; ? ? ? ? ? ?server_name www.domain.com; ? ? ? ? ? ?// $scheme will get the http protocol ? ? ? ? ? ?// and 301 is best practice for tablet, phone, desktop and seo ? ? ? ? ? ?return 301 $scheme://domain.com$request_uri; ? ?} ? ? ? ?server { ? ? ? ? ? ?listen 80; ? ? ? ? ? ?server_name domain.com; ? ? ? ? ? ?// here goes the rest of your config file ? ? ? ? ? ?// XXX ? ? ? ? ? ?location / { ? ? ? ? ? ? ? ? ? ?rewrite ^/cp/login?$ /cp/login.php last; ? ? ? ? ? ? ? ?// etc etc... ? ? ? ? ? ? ? ?} ? ?} ? ?

要先用 nginx -v ?命令检查你所说使用的nginx的版本. 下面是对于旧版本的nginx301跳转到带www域名方法从www.ksharpdabu.info 跳转到 ?ksharpdabu.info

?

复制代码 代码如下:server { ? ? ? ?server_name ?www.domain.com; ? ? ? ?rewrite ^(.*) http://domain.com$1 permanent; ? ?}

? ?server { ? ? ? ?server_name ?domain.com; ? ? ? ?#The rest of your configuration goes here# ? ?}

所以需要两个server段。

从ksharpdabu.info 跳转到 ?www.ksharpdabu.info

?

复制代码 代码如下:server { ? ? ? ?server_name ?domain.com; ? ? ? ?rewrite ^(.*) http://www.domain.com$1 permanent; ? ?}

? ?server { ? ? ? ?server_name ?www.domain.com; ? ? ? ?#The rest of your configuration goes here# ? ?}

按上面设置后,用rewrite的方法跳转到指定的域名下,利于SEO下面是我举例,从www.google.com 跳转到 google.com的部分nginx配置内容:

?

复制代码 代码如下:server { ? ? ? ?server_name ?www.google.com; ? ? ? ?rewrite ^(.*) http://google.com$1 permanent; ? ?} ? ?server { ? ? ? ? ? listen 80; ? ? ? ? ? server_name google.com; ? ? ? ? ? index index.php index.html; ? ? ? ? ? #### ? ? ? ? ? # now pull the site from one directory # ? ? ? ? ? root /var/www/www.google.com/web; ? ? ? ? ? # done # ? ? ? ? ? location = /favicon.ico { ? ? ? ? ? ? ? ? ? ?log_not_found off; ? ? ? ? ? ? ? ? ? ?access_log off; ? ? ? ? ? } ? ?}

网上还有一种不用rewirte的 方法,如下:

?

复制代码 代码如下:server { ? ? ? ?#listen 80 is default ? ? ? ?server_name www.XXX.com; ? ? ? ?return 301 $scheme://XXX.com$request_uri; ? ?}

? ?server { ? ? ? ?#listen 80 is default ? ? ? ?server_name XXX.com; ? ? ? ?## here goes the rest of your conf... ? ?}

因为return可以用于所有的版本,而rewrite可能因为版本的不同,导致301出错。而且可以直接停止执行匹配和搜索。

下面包含了http和https的。同一个服务器。

?

复制代码 代码如下:server { ? ? ? ?listen 80; ? ? ? ?listen 443 ssl; ? ? ? ?server_name www.XXX.com; ? ? ? ?return 301 $scheme://XXX.com$request_uri; ? ?}

? ?server { ? ? ? ?listen 80; ? ? ? ?listen 443 ssl; ? ? ? ?server_name XXX.com; ? ? ? ?# rest goes here... ? ?}

$scheme 变量只会包含http 如果你的服务器只监听80端口(默认是80端口)同时监听的选项中不含ssl关键字 . 不适用这个变量,就不能获得你所想的要的跳转结果。

将所有http强制跳到https, SSL (personal config on UNIX with IPv4, IPv6, SPDY, ...):

复制代码 代码如下:## Redirect all www to non-www#server { ? ?server_name ? ? ? ? ?www.XXX.com; ? ?ssl_certificate ? ? ?ssl/XXX.com/crt; ? ?ssl_certificate_key ?ssl/XXX.com/key; ? ?listen ? ? ? ? ? ? ? *:80; ? ?listen ? ? ? ? ? ? ? *:443 ssl spdy; ? ?listen ? ? ? ? ? ? ? [::]:80 ipv6only=on; ? ?listen ? ? ? ? ? ? ? [::]:443 ssl spdy ipv6only=on;

? ?return 301 https://XXX.com$request_uri;}

## Redirect all non-encrypted to encrypted#server { ? ?server_name ? ? ? ? ?XXX.com; ? ?listen ? ? ? ? ? ? ? *:80; ? ?listen ? ? ? ? ? ? ? [::]:80;

? ?return 301 https://XXX.com$request_uri;}

## There we go!#server { ? ?server_name ? ? ? ? ?XXX.com; ? ?ssl_certificate ? ? ?ssl/XXX.com/crt; ? ?ssl_certificate_key ?ssl/XXX.com/key; ? ?listen ? ? ? ? ? ? ? *:443 ssl spdy; ? ?listen ? ? ? ? ? ? ? [::]:443 ssl spdy;

? ?# rest goes here...} ## Redirect all www to non-www#server { ? ?server_name ? ? ? ? ?www.XXX.com; ? ?ssl_certificate ? ? ?ssl/XXX.com/crt; ? ?ssl_certificate_key ?ssl/XXX.com/key; ? ?listen ? ? ? ? ? ? ? *:80; ? ?listen ? ? ? ? ? ? ? *:443 ssl spdy; ? ?listen ? ? ? ? ? ? ? [::]:80 ipv6only=on; ? ?listen ? ? ? ? ? ? ? [::]:443 ssl spdy ipv6only=on; ? ?return 301 https://XXX.com$request_uri;} ## Redirect all non-encrypted to encrypted#server { ? ?server_name ? ? ? ? ?XXX.com; ? ?listen ? ? ? ? ? ? ? *:80; ? ?listen ? ? ? ? ? ? ? [::]:80; ? ?return 301 https://XXX.com$request_uri;} ## There we go!#server { ? ?server_name ? ? ? ? ?XXX.com; ? ?ssl_certificate ? ? ?ssl/XXX.com/crt; ? ?ssl_certificate_key ?ssl/XXX.com/key; ? ?listen ? ? ? ? ? ? ? *:443 ssl spdy; ? ?listen ? ? ? ? ? ? ? [::]:443 ssl spdy; ? ?# rest goes here...}

国内免备案VPS301跳转服务器国内免备案服务器域名被墙跳转301,绕过信息安全中心不能放违反法律法规内容!(北京免备案镇江免备案江苏免备案辽宁免备案vps山东联通免备案
分享新闻到:

更多帮助

国内用户福音:无需备案即可拥有高性能VPS主机

新闻中心 2026-05-01
在数字化时代,想要拥有一个稳定、高效的网络空间,越来越多用户将目光投向了VPS主机。然而,对国内用户来说,繁琐的流程和严格的备案要求,常常成为拦在梦想与现实之间···
查看全文

2026最新国内免备案云服务器解决方案全解析

新闻中心 2026-05-01
伴随互联网行业的不断发展,越来越多的企业和个人对云服务器的需求日益增长。对于国内用户来说,应用部署和数据存储的灵活性以及合规性变得尤为重要。国内云服务器不仅在性···
查看全文

国内云虚拟主机是否真的免备案?最新政策解析与使用指南

新闻中心 2026-04-30
近年来,互联网发展的脚步日益加快,愈来愈多的人选择建立自己的站点。人们在选购虚拟主机时,常常关注“免备案”这一词汇。那么,国内云虚拟主机真的可以不用备案吗?在政···
查看全文
返回更多帮助