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

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

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

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

一、检查确认Rewrite模块加载

本文测试是在CentOS 6系统上,路径为:/etc/httpd/conf/httpd.confLoadModule 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开关,脚本如下:

Options Indexes FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

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

....

定义在一起,方便维护。

三、测试Rewrite功能

以下为.htaccess测试实例:# BEGIN

RewriteEngine  on

RewriteBase /

RewriteRule .*$

#END

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

你可能感兴趣的:(php,开启重写模块)