apache使用.htaccess文件配置rewrite重写伪静态

发布时间:2020-11-23编辑:脚本学堂
如何在apache用.htaccess文件配置url rewrite伪静态重写?apache中需要加载mod_rewrite模块,这里分享下我的配置步骤,需要的朋友参考下。

1,首先确定 apache 版本,否加载了 mod_Rewrite 模块。
简单方法 echo phpinfo();  看apache的mod里有没有rewrite
如果有跳过此步

Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:
 

LoadModule Rewrite_module libexec/mod_Rewrite.so
AddModule mod_Rewrite.c

Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:
 

LoadModule Rewrite_module modules/mod_Rewrite.so

注:如果前面有#,将其去掉。并且保证你的apache文件里有mod_Rewrite.so文件(1.X版的要有mod_Rewrite.c)。

2,配置apache配置文件httpd.conf实现rewrite
找到
 

复制代码 代码示例:
<IfModule mod_Rewrite.c>
</IfModule>

没有的自己添加,然后之间写入你的rewrite规则,例如:
 

复制代码 代码示例:
<IfModule mod_Rewrite.c>
RewriteEngine On
RewriteRule ^test.htm$  test.php
</IfModule>

3,注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用,重启apache,rewrite配置就完了。

4,让apache支持.htaccess
把<IfModule mod_Rewrite.c>里的代码删除掉

找到
 

复制代码 代码示例:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
 

把里边的AllowOverride None  改为  Allow Override All   这样.htaccess文件才能启用。
 
5,创建一个.htaccess文件,win下可以用notepad++之类的编辑器建(记事本不行),要是嫌麻烦此文档附件中有,放在项目目录下,然后在里边写上自己的规则。
 

复制代码 代码示例:
RewriteEngine on
Rewriterule ^test.htm$ test.php

6,重启apache就可以了。

7,一般的apache以上配置即可,但我的还不行,所以研究下apache的配置文件发现了这样一个参数:
AccessFileName access.ht
AccessFileName定义每个目录下的访问控制文件的文件名,缺省为.htaccess (大多数人直接就是.htaccess,所以好多网上教程都没写这步,而我的是access.ht),可以通过更改这个文件,来改变不同目录的访问控制限制。

将之改为:
 

AccessFileName .htaccess

8,重启apache服务器,使配置生效。

 另外,htaccess位置问题:htaccess文件(或者"分布式配置文件")提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。(每一个文件夹下都可以有个.htaccess文件)。