通常利用Apache的rewrite模块对URL进行重写的时候,rewrite规则会写在 .htaccess文件里。但是要使Apache能够正常读取 .htaccess文件的内容,就必须对 .htaccess所在的目录进行配置。
 
首先来认识一下.htaccess文件,概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
 

.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,当.htaccess中的指令生效时,它将重写原来Apache中默认的指令,但只作用于.htaccess文件所在的目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

 
首先我们来详细认识一下Apache的AllowOverride指令:
当服务器发现一个.htaccess文件(由AccessFileName指定)时,它需要知道在这个文件中声明的是哪些指令能覆盖在此之前指定的配置指令。
AllowOverride指令仅允许存在于<Directory>配置段
AllowOverride仅在不包含正则表达式的<Directory>配置段中才是有效的。在<Location>, <DirectoryMatch>, <Files>配置段中都是无效的。
一般从安全性考虑,更目录的AllowOverride属性一般都配置成不允许任何Override,即原文配置是这么写的:
<Directory />
AllowOverride None
</Directory>
AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。 当AllowOverride设置成None时,相应的配置目录下的 .htaccess 文件是不被读取,被完全忽略的,此时 .htaccess文件也就完全不生效。 当AllowOverride设置成 All 时,所有具有“.htaccess”作用域的指令都会生效,意味着原来Apache中的指令都将会按 .htaccess文件中的指令重写。
对于URL rewrite 来说,至少吧他对应的权限开启,也就是开启 FileInfo :即:
<Directory /www/>
AllowOverride FileInfo
</Directory>
对于AllowOverride,还可以对它指定如下一些能被重写的指令类型.
  1 AuthConfig 允许使用所有的权限指令,他们包括 AuthDBMGroupFile AuthDBMUserFile AuthGroupFile AuthName AuthTypeAuthUserFile 和 Require 
 2 FileInfo 允许使用文件控制类型的指令。它们包括 AddEncoding AddLanguage AddType DEfaultType ErrorDocument LanguagePriority 
 3 Indexes 允 许使用目录控制类型的指令。它们包 括 AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon DirectoryIndex FancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName 
 4 Limit 允许使用权限控制指令。它们包括Allow Deny和Order 
 5 Options 允许使用控制目录特征的指令.他们包括Options 和XBitHack 
 Options: 
Options指令一般都写在AllowOverride指令的上面:如下形式:
<Directory "D:/AppServ/Apache2.2/icons">
     Options Indexes MultiViews
     AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
Options指令如下:
1 All 准许以下除MultiViews以外所有功能 
2 MultiViews 允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用 
3 Indexes 若该目录下无index文件,则准许显示该目录下的文件以供选择,禁止目录浏览可以删这项或“-Indexes”。
4 IncludesNOEXEC 准许SSI,但不可使用#exec和#include功能 
5 Includes 准许SSI 
  6 FollowSymLinks 在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在<Local>标记内设置,该选项会被忽略 
7 SymLinksIfOwnerMatch 在该目录中仅仅跟踪本站点内的链接 
8 ExecCGI 在该目录下准许使用CGI
其实使用注意事项及使用.htaccess文件的优缺点请参考百度百科里的.htaccess http://baike.baidu.com/view/91163.htm 
 
如果在.htaccess文件中的某些指令不起作用,可能有多种原因。

 

  最常见的原因是AllowOverride指令没有被正确设置,必须确保没有对此文件区域设置 AllowOverride None 。有一个很好的测试方法,就是在.htaccess文件随便增加点无意义的垃圾内容,如果服务器没有返回了一个错误消息,那么几乎可以断定设置了 AllowOverride None 。

 

  在访问文档时,如果收到服务器的出错消息,应该检查Apache的错误日志,可以知道.htaccess文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。

URL重定向之一.htaccess文件和AllowOverride指令的更多相关文章

  1. .htaccess文件讲解

    .htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户 ...

  2. Apache .htaccess文件

    今天在将ThinkPHP的URL模式由普通模式(URL_MODE=1)http://localhost/mythinkphp/index.php/Index/user/id/1.html改为重写模式 ...

  3. Apache 容器 Directory Location Files 及htaccess文件

    配置段容器的类型 相关模块 core mod_proxy 相关指令 <Directory> <DirectoryMatch> <Files> <FilesMa ...

  4. Apache伪静态(Rewrite).htaccess文件详解

    Htaccess(超文本访问)是一个简单的配置文件,它允许设计师,开发者和程序员通过它来改变Apache Web服务器的配置.这些功能包括用户重定向.URL重写(url rewrite,国内很多称为伪 ...

  5. .htaccess 文件来进行用户组的目录权限访问控制

    <IfModule rewrite_module>RewriteEngine onRewriteRule ^((?:bootstrap|css|img|js||MathJax|video) ...

  6. 网站之.htaccess文件

    Apache系统中的.htaccess文件(分布式配置文件)提供了针对目录改变配置的方法,也就是在一个特定的文件目录中放置一个包含指令的文件,以作用于此目录以及所有子目录.直白的说,.htaccess ...

  7. 在apache中使用.htaccess文件的注意事项

    在apache的配置文件中: <VirtualHost *:80> ServerName tp5.com DocumentRoot d:/wamp/www/tp5.com/public & ...

  8. 浅谈.htaccess文件--避免滥用.htaccess文件

    .htaccess文件提供了一种目录级别的修改配置的方式. NOTE: 如果你拥有修改apache配置文件的权限,那么完全没有必要使用.htaccess文件.使用.htaccess文件会拖慢apach ...

  9. .htaccess文件 301重定向URL重写[NC][R][F][L]是什么意思

    .htaccess中的[NC][R][F][L]几个标记是什么意思 NC: no case,就是说不区分大小写 R:redirect,重定向 F:forbidden,禁止访问 L:last,表示已经是 ...

随机推荐

  1. BIOS截图中文

  2. html禁止图片拖拽移动在新窗口打开

    一直觉得直接从网站的表格上复制数据挺方便的, 今天,领导突然说网站上的图片可以被别人拖走了,必须禁止,哎,果然只有领导才考虑得到这种事情啊 so, 将ondragstart="return ...

  3. FishiGUI系统架构分析 和层次结构 二

    FishiGUI的类型 FIshiGUI属于为应用程序提供图形界面服务的框架系统.它并不直接与终于用户交互(负责与终于用户交互的是在FishiGUI基础上开发的应用程序).而是接受操作系统传来的硬件消 ...

  4. 运用Arc Hydro提取河网

    Arc hydro 插件需要 spatial analyst 支持: 解决方法:Tools菜单>>Extensions...,勾选Spatial Analyst 1.设置存储路径 ApUt ...

  5. freemarker 展示数据列表并传值给后台

    select id="initiatorId" name="initiatorId">                  <#if initiato ...

  6. iOS UIView添加阴影

    _bottomView.layer.masksToBounds = NO; _bottomView.backgroundColor = [UIColor whiteColor]; _bottomVie ...

  7. 篇一、安装配置Android Studio

    系统:Mac 10.10 Java JDK:官方JDK1.8 IDE:Android Studio 1.2 Android SDK:24.2 模拟器:genymtion 安装 Mac版本的Androi ...

  8. 题目1 : Farthest Point

    时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 Given a circle on a two-dimentional plane. Output the integral ...

  9. Linux 能PING IP 但不能PING 主机域名的解决方法 vim /etc/nsswitch.conf hosts: files dns wins

    Linux 能PING IP 但不能PING 主机域名的解决方法 转载 2013年12月25日 10:24:27 13749 . vi /etc/nsswitch.conf hosts: files ...

  10. Android Studio中常用设置

    参考资料: 1.http://blog.csdn.net/itdada/article/details/43375893 常用设置: 1.Tab不用4个空格Code Style->Java-&g ...