首页

如何在CentOS 7上使用Apache將www重定向到非www

站长
2020-03-07  阅读 75

Apache介绍

Apache 是一个模块化的Web服务器,允许您通过启用和禁用模块来自定义其功能。这使管理员能够定制Apache的功能来满足Web应用程序的需求。

查看Apache是否开启

在本教程中,我们不讲如何安装Apache,关于Apache的安装可以参考我之前的一篇文章:建站过程实录

在Linux系统下,直接使用root用户进行演示。执行命令: systemctl status httpd 查看Apache的状态。随着Apache的启动和运行,让我们把注意力转向它的模块。

验证mod_rewrite

在CentOS7下,Apache默认开启mod_rewrite模块,我们可以打印所有加载的模块列表

httpd -M

Output:

...
remoteip_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
slotmem_plain_module (shared)
...
复制代码

如果rewrite_module不在列表中出现,可以通过编辑00-base.conf来引入模块(默认路径/etc/httpd/conf.modules.d/00-base.conf

vi /etc/httpd/conf.modules.d/00-base.conf复制代码

一旦文本文件打开输入i进入插入模式,然后添加或取消注释里最突出显示的一行:

#
# This file loads most of the modules included with the Apache HTTP
# Server itself.
#
. . .
LoadModule rewrite_module modules/mod_rewrite.so
. . .复制代码

现在按下ESC退出插入模式,然后输入:x,然后按enter键保存并退出该文件。接下来重新启动Apache来使应用配置生效。

systemctl restart httpd复制代码

随着Apache mod_rewrite模块的启用,我们接下来要配置.htaccess文件。

设置.htaccess文件

1、htaccess 文件是Apache服务器中的一个配置文件,用于实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

2、htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

3、管理员可以通过Apache的AllowOverride指令来设置。

4、.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。

在使用.htaccess文件之前,我们需要更新AllowOverride设置能覆盖Apache指令

vi /etc/httpd/conf/httpd.conf复制代码

找到<Directory /var/www/html>部分,然后更改AllowOverride的值为All,如下图所示:

file


保存并退出文件后重启Apache来使应用配置生效。systemctl restart httpd,接下来在/var/www/html目录下创建.htaccess文件(vi /var/www/html/.htaccess)。 以下行添加到文件的顶部激活RewriteEngine,它表示Apache的处理遵循任何规则。

RewriteEngine On复制代码

保存并退出文件。您现在有一个.htaccess文件,将让你来定义规则来操作URL。在我们进入实际编写规则前,让我们花点时间

將www重定向到非www

配置/var/www/html/.htaccess文件的内容如下

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]复制代码

保存并退出,不用重启Apache,这些变化立即生效。此时就可以在Web浏览器中访问你的域以确保设置正确。

將非www重定向到www

配置/var/www/html/.htaccess文件的内容如下

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]复制代码

保存并退出,不用重启Apache,这些变化立即生效。此时就可以在Web浏览器中访问你的域以确保设置正确。

结语

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

参考

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!