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

更多帮助

告别繁琐备案BC国内免备案服务器助您轻松搭建网站

新闻中心 2026-04-11
曾几何时,想要搭建个人或企业网站,很多人都被复杂的备案流程所困扰。资料的准备、反复的审核、漫长的等待周期,对于初创团队或个人站长来说,往往让激情与思路被耗损在流···
查看全文

2026年最新国内免备案虚拟空间推荐与使用攻略

新闻中心 2026-04-11
随着互联网的不断发展,越来越多的个人和企业开始关注虚拟空间的选择与使用。当网站建设变得普及且需求多样化时,免备案虚拟空间逐渐成为一类备受关注的解决方案。对于那些···
查看全文

国内免备案服务器如何实现301重定向快速提升网站访问速度

新闻中心 2026-04-10
随着互联网的普及和网站业务需求的增长,越来越多的人关注网站的访问速度与稳定性。在众多提升手段之中,通过301重定向调整网站结构及访问路径成为一种有效的方法,尤其···
查看全文
返回更多帮助