时间:2021-07-01 10:21:17 帮助过:4人阅读
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伪静态规则步骤