apache配置rewrite及.htaccess文件(转载)

今天看到一个哥们的帖子发了个rewrite的帖子,之前也写过一个,配置挺简单的,但当时没注意这个问题,当时没有用到.htaccess文件,在机子上测试了一下,发现确实无法用,因而开始找问题的所在。php

本身从头搭建了一下:html

1.  首先肯定您使用的 Apache 版本,及是否加载了 mod_Rewrite 模块。apache

     简单方法 echo phpinfo();  看apache的mod里有没有rewrite编辑器

     若是有跳过此步分布式

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

  LoadModule Rewrite_module libexec/mod_Rewrite.so测试

  AddModule mod_Rewrite.c网站

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

  LoadModule Rewrite_module modules/mod_Rewrite.socode

  注:若是前面有#,将其去掉。而且保证你的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文件)

 

转载自:http://www.cnblogs.com/banruo/archive/2010/11/02/1867536.html

相关文章
相关标签/搜索