介绍
当你有你的网站或应用程序启动和运行一个域的背后,则是经常需要同时允许用户通过简单的域名和 WWW子域名访问它。 也就是说,他们应该能够使用或不使用访问您的域“ WWW。 ” 前缀,例如example.com
或www.example.com
,在网络浏览器,并可以具有相同内容的呈现。 虽然有各种各样的方法来设置,为了一致性和SEO考虑,最好的解决方案是选择您喜欢的域,普通或www,并重定向其他人到首选域。 这种类型的重定向被称为永久重定向或“301重定向”,并可以很容易地设置正确地配置你的DNS资源记录和Web服务器软件。
本教程将告诉你如何将WWW网址到非www,如重定向www.example.com
到example.com
在CentOS 7,与Nginx的我们还将向您展示如何在另一个方向重定向,从非WWW网址为WWW 。 在Ubuntu 14.04版本的教程,请点击这里 。
如果你想在Apache Web服务器来执行这种类型的重定向,您应按照本教程来代替: 如何在CentOS 7重定向到WWW非www与Apache 。
先决条件
本教程假设您拥有超级用户权限,即sudo
或根,运行Nginx的服务器上。 如果你不已经有成立,按照这个教程: 在CentOS 7初始服务器设置 。
假设你安装了Nginx。 如果你还没有这种设置,上有下标的几个教程Nginx的标签 。
您必须能够将记录添加到管理您的域的DNS。 如果你不已经有一个域名,你可以购买一个来自域名注册商,并与注册的DNS或管理它DigitalOcean的DNS 。 在本教程中,我们将使用DigitalOcean DNS创造必要的记录。
让我们开始通过配置您的DNS记录。
配置DNS记录
为了所需的重定向,建立www.example.com
为example.com
,反之亦然,你必须为每个名称的A记录 。
打开您用于管理DNS的任何内容。 在我们的例子中,我们将使用DigitalOcean DNS 。
如果域(也称为区域)记录不存在,请立即创建一个。 主机名应该是你的域,例如example.com
,和IP地址应设置为您的Nginx服务器的公网IP地址。 这将自动创建一个A记录,将您的域指向您指定的IP地址。 如果您使用其他系统管理网域,可能需要手动添加。
接下来,再添一条记录“WWW”的主机名(或“ www.example.com ”如果部分子不工作),并指定相同的IP地址。
当您创建了两个记录时,它应该看起来像这样:
注意:这也将与CNAME记录的工作,只要规范名称的A记录指的是你的Nginx Web服务器的IP地址。
现在您的服务器应该可以通过www和非www域访问,但我们仍然需要设置重定向。 我们现在就这样做。
配置Nginx重定向
为了执行301重定向,您必须添加一个指向您的原始服务器块的新Nginx服务器块。
在编辑器中打开Nginx服务器块配置。 我们将添加在Nginx的其他配置文件包括目录, /etc/nginx/conf.d
称为redirect.conf
:
sudo vi /etc/nginx/conf.d/redirect.conf
您的原始服务器块应该已经定义。 根据您要重定向的方向,使用以下选项之一。
选项1:将www重定向到非www
如果您想要将用户从www重定向到一个简单的非www域,请插入以下配置:
server {
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
保存并退出。 这将配置Nginx的请求重定向到“ www.example.com ”到“example.com”。 请注意,应该有另一个服务器块定义您的非www Web服务器。
要使更改生效,请重新启动Nginx:
sudo systemctl restart nginx
需要注意的是,如果你使用的是HTTPS,在listen
指令应设置为端口443
,而不是80
。
使用此curl命令可确保非www域重定向到www域(将突出显示的部分替换为实际域):
curl -I http://www.example.com
你应该得到一个301 Moved Permanently
的反应,显示非www重定向位置,如下所示:
Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http://example.com/
当然,您应该在网络浏览器(www和非www)中访问您的域名,以确保。
选项2:将非www重定向到www
如果您希望将用户从普通的非www域重定向到www域,请添加此服务器块:
server {
server_name example.com;
return 301 $scheme://www.example.com$request_uri;
}
保存并退出。 这将配置Nginx的请求重定向到“example.com”到“ www.example.com ”。 注意,应该有另一个服务器块来定义您的www web服务器。
要使更改生效,请重新启动Nginx:
sudo systemctl restart nginx
需要注意的是,如果你使用的是HTTPS,在listen
指令应设置为端口443
,而不是80
。
使用此curl命令可确保非www域重定向到www域(将突出显示的部分替换为实际域):
curl -I http://example.com
你应该得到一个301 Moved Permanently
的反应,显示了www重定向位置,如下所示:
Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http://www.example.com/
当然,您应该在网络浏览器(www和非www)中访问您的域名,以确保。
结论
而已! 您的Nginx永久重定向现已正确配置,您的用户将能够通过您的非www和www域访问您的Web服务器。