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山东联通免备案
分享新闻到:

更多帮助

精选国内免备案空间推荐让您的网站快速上线更安心

新闻中心 2026-05-12
在数字化的时代,越来越多的个人和企业希望能够拥有专属于自己的线上空间。搭建网站,虽已成为一件普通不过的事情,在实际操作过程中依然存在不少技术与政策细节。其中,免···
查看全文

国内免备案服务器部署全攻略:轻松实现高效网站搭建

新闻中心 2026-05-12
随着互联网行业的飞速发展,越来越多的企业、开发者和技术爱好者开始关注如何高效搭建自己的网络平台。国内的服务器选择丰富,但如何在合规的前提下,实现高效和灵活的运维···
查看全文

零度云国内免备案VPS推荐:稳定高效轻松搭建你的网站

新闻中心 2026-05-11
在当下的互联网时代,越来越多的个人和企业选择建立属于自己的网站,无论是为了信息展示,还是为了业务运营,网站都成为一种不可或缺的工具。对于很多初学者或者小型创业团···
查看全文
返回更多帮助