如何在CentOS 7与Apache重定向到WWW非www

介绍

当你有你的网站或应用程序启动和运行一个域的背后,则是经常需要同时允许用户通过简单的域名 WWW子域名访问它。 也就是说,他们应该能够使用或不使用访问您的域“ WWW。 ” 前缀,例如example.comwww.example.com ,在网络浏览器,并可以具有相同内容的呈现。 虽然有各种各样的方法来设置,为了一致性和SEO考虑,最好的解决方案是选择您喜欢的域,普通或www,并重定向其他人到首选域。 这种类型的重定向被称为永久重定向或“301重定向”,并可以很容易地设置正确地配置你的DNS资源记录和Web服务器软件。

本教程将告诉你如何将WWW网址到非www,如重定向www.example.comexample.com在CentOS 7,使用Apache我们还将向您展示如何在另一个方向重定向,从非WWW网址为WWW 在Ubuntu 14.04版本的教程,请点击这里

如果你想与Nginx的作为Web服务器来执行这种类型的重定向,您应按照本教程来代替: 如何在CentOS 7重定向到WWW非www与Nginx的

先决条件

本教程假设您拥有超级用户权限,即sudo或根,运行的Apache服务器上。 如果你不已经有成立,按照这个教程: 在CentOS 7初始服务器设置

假定您已安装Apache(httpd)。 如果你还没有这种设置,上有下标的几个教程Apache的标签

您必须能够将记录添加到管理您的域的DNS。 如果你不已经有一个域名,你可以购买一个来自域名注册商,并与注册的DNS或管理它DigitalOcean的DNS 在本教程中,我们将使用DigitalOcean DNS创造必要的记录。

让我们开始通过配置您的DNS记录。

配置DNS记录

为了所需的重定向,建立www.example.comexample.com ,反之亦然,你必须为每个名称的A记录

打开您用于管理DNS的任何内容。 在我们的例子中,我们将使用DigitalOcean DNS

如果域(也称为区域)记录不存在,请立即创建一个。 主机名应该是你的域,例如example.com ,和IP地址应设置为Apache服务器的公网IP地址。 这将自动创建一个A记录,将您的域指向您指定的IP地址。 如果您使用其他系统管理网域,可能需要手动添加。

接下来,再添一条记录“WWW”的主机名(或“ www.example.com ”如果部分子不工作),并指定相同的IP地址。

当您创建了两个记录时,它应该看起来像这样:

必需A记录

注意:这也将与CNAME记录的工作,只要规范名称的A记录指的是你的Apache Web服务器的IP地址。

现在您的服务器应该可以通过www和非www域访问,但我们仍然需要设置重定向。 我们现在就这样做。

启用Apache重写模块

为了执行301重定向,我们将使用Apache的mod_rewrite,或者重写,模块。 这样做将确保用户可以使用或不使用WWW。前缀访问你的网站,并重定向到您喜欢的域名。

默认情况下,CentOS 7上的Rewrite模块已启用。 如果未启用它,出于某种原因,一定要这行添加到您的Apache配置(这是在模块部分/etc/httpd/conf.modules.d/00-base.conf默认情况下):

LoadModule rewrite_module modules/mod_rewrite.so

启用.htaccess文件

我们将配置Apache使用重定向规则.htaccess文件。 这是一个必须通过放宽DocumentRoot的目录权限来启用的功能。

打开您的Apache配置文件进行编辑。 在CentOS,默认的配置文件位于/etc/httpd/conf/httpd.conf ,所以我们将使用在我们的例子:

sudo vi /etc/httpd/conf/httpd.conf

假设你使用的是默认的DocumentRoot, /var/www/html ,找到与之对应的配置块, <directory "/var/www/html>在块,更改。 AllowOverride NoneAllowOverride All

添加到Apache配置
 <Directory /var/www/html>
...
    AllowOverride All
...
 </Directory>

保存并退出。

现在重新启动Apache,使更改生效:

sudo systemctl restart httpd

现在的Apache配置读.htaccess位于下的任何地方文件/var/www/html目录。 让我们现在添加我们的Rewrite规则。

配置重写模块

正如我们前面提到的,我们将使用配置重写模块.htaccess文件。

目录更改到您的DocumentRoot,在我们的情况下, /var/www/html

cd /var/www/html

现在开放.htaccess编辑:

sudo vi .htaccess

当然,如果你以前没有创建过该文件,它将是空白的。 根据您要重定向的方向,使用以下选项之一。

选项1:将www重定向到非www

如果您想要将用户从www重定向到一个简单的非www域,请插入以下配置:

.htaccess - www到非www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

保存并退出。 更改应立即生效。 需要注意的是,如果你使用的是HTTPS,您应该更新“HTTP”,在RewriteRule行,为“https”。

使用此curl命令可确保非www域重定向到www域(将突出显示的部分替换为实际域):

curl -I http://www.example.com

你应该得到一个301 Moved Permanently的反应,显示非www重定向位置,如下所示:

Output:HTTP/1.1 301 Moved Permanently
Date: Mon, 04 May 2015 16:04:56 GMT
Server: Apache/2.4.6 (CentOS)
Location: http://example.com/
Content-Type: text/html; charset=iso-8859-1

当然,您应该在网络浏览器(www和非www)中访问您的域名,以确保。

选项2:将非www重定向到www

如果您希望将用户从简单的非www域到重定向到www域,请插入以下配置:

.htaccess - 非www到www
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

保存并退出。 更改应立即生效。 需要注意的是,如果你使用的是HTTPS,您应该更新“HTTP”,在RewriteRule行,为“https”。

使用此curl命令可确保非www域重定向到www域(将突出显示的部分替换为实际域):

curl -I http://example.com

你应该得到一个301 Moved Permanently的反应,显示了www重定向位置,如下所示:

Output:HTTP/1.1 301 Moved Permanently
Date: Mon, 04 May 2015 16:05:26 GMT
Server: Apache/2.4.6 (CentOS)
Location: http://www.example.com/
Content-Type: text/html; charset=iso-8859-1

当然,您应该在网络浏览器(www和非www)中访问您的域名,以确保。

结论

而已! 您的Apache重定向现在已正确配置,您的用户将能够通过您的非www和www域访问您的Web服务器。

如果您想了解更多关于mod_rewrite的 ,我们用来实现重定向,随时Apache的功能来阅读本教程: 。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏