欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-04-07 11:26:15
...
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已生效。

相关文章:

nginx下laravel框架rewrite的设置

windows服务器下iis伪静态设置方法(附rewrite伪静态组件)

Nginx详细的Rewrite伪静态规则步骤