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-01-13
在互联网时代,网站备案是每一个网站持有者在开展网站业务前必须面对的一步。而关于备案的多个细节问题,尤其是与虚拟主机到期的关联问题,常常引发一些网站站长的关注和思···
查看全文

如何快速获取免备案域名空间助您网站无障碍上线

新闻中心 2026-01-13
在当今数字化时代中,网站已成为企业和个人展示自身形象、发布信息及与用户互动的重要平台。然而,许多人在建立网站时往往面临一个关键问题,即获取一个能够快速上线而又不···
查看全文

选择不用备案的香港虚拟主机:优缺点解析与建议

新闻中心 2026-01-12
选择香港虚拟主机在近年来逐渐成为许多企业和个人的热门选项,特别是对于那些希望规避部分繁琐步骤的用户。香港虚拟主机最大的优势之一是无需进行备案,这在国内市场是个不···
查看全文
返回更多帮助