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下面,尽量更网站配置的:
8b74a224cd81ca964ce91534aaea906f ....ee672f0beb03b42be69279368a66a410
定义在一起,方便维护。
三、测试Rewrite功能
以下为.htaccess测试实例:
# BEGIN <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule .*$ </IfModule> #END
测试方法,拷贝保存为.htaccess,上传到网站根目录下,访问网站任何路径页面,均会跳转到本博客,说明Rewrite已生效。
相关文章: