首页 > 服务器 > Apache > Apache Rewrite模块重写功能开启及检测实现
2014
11-07

Apache Rewrite模块重写功能开启及检测实现

Apache版本不同、操作系统不同,其配置文件命名、配置管理方式也经常不同,比如安装目录可能是httpd,也可能是apache2,配置文件名及加载模块方式也经常不同,或许对apache官方而言是有规律的,但毕竟我们大部分用户都不是网管,没事整天配置apache,都是现用现找资料, 一般两个文件路径不对往往就火大了。进入正题。

Apache默认Rewrite功能是禁用的,但是其Rewrite模块是加载的,所以,我们也不要只忙着写.htaccess文件,总是不生效,先检查一下我们的apache是否已经识别我们的.htacess。

一、检查确认Rewrite模块加载

本文测试是在CentOS 6系统上,路径为:/etc/httpd/conf/httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

如果前面有注释就去掉即可,重启APACHE。
如果使用系统自带命令安装,如yum install或者apt-get install,在httpd.conf/apache2.conf下找不到

LoadModule rewrite_module modules/mod_rewrite.so

这一行,可以参考下面的设置来加载Rewrite模块:

在终端中执行

sudo a2enmod rewrite

指令后,即启用了 Mod_rewrite 模块。

另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load 来打开 Mod_rewrite 模块。用指令操作就是:

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

二、检查确认目录Rewrite打开

Rewrite库加载不代表我们的.htaccess文件就能生效,还需要专门打开指定目录的AllowOveride开关,脚本如下:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

其中AllowOverride只能定义在Directory这个Section里,具体用法可参考apache官方说明(下文链接),以上脚本一般放在httpd.conf或/etc/httpd/conf.d/vhost.conf下面,尽量更网站配置的:

<VirtualHost ...> ....</VirtualHost>

定义在一起,方便维护。

三、测试Rewrite功能

以下为.htaccess测试实例:

# BEGIN
<IfModule mod_rewrite.c>
    RewriteEngine  on
    RewriteBase /
    RewriteRule .*$ 
</IfModule>
#END

测试方法,拷贝保存为.htaccess,上传到网站根目录下,访问网站任何路径页面,均会跳转到本博客,说明Rewrite已生效。

编程技巧