通常利用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>配置段中都是无效的。
<Directory />
AllowOverride None
</Directory>
AllowOverride指令按类别决定了.htaccess文件中哪些指令才是有效的。allowoverride none当AllowOverride设置成None时,相应的配置目录下的 .htaccess 文件是不被读取,被完全忽略的,此时 .hta
ccess文件也就完全不生效。allowoverride none 当AllowOverride设置成 All时,所有具有“.htaccess”作用域的指令都会生效,意味着原来Apache中的指令都将会按.htaccess文件中的指令重写。
对于URL rewrite 来说,至少吧他对应的权限开启,也就是开启 FileInfo :即:
<Directory //>
AllowOverride FileInfo
</Directory>
对于AllowOverride,还可以对它指定如下一些能被重写的指令类型.
1 AuthConfig 允许使用所有的权限指令,他们包括 AuthDBMGroupFile AuthDBMUserFileAuthGroupFile AuthName AuthTypeAuthUserFile 和 Require
2 FileInfo 允许使用文件控制类型的指令。它们包括 AddEncoding AddLanguage AddTypeDEfaultType ErrorDocument LanguagePriority
3 Indexes 允 许使用目录控制类型的指令。它们包 括 AddDescription AddIconAddIconByEncoding AddIconByType DefaultIcon DirectoryIndexFancyIndexing HeaderName IndexIgnore IndexOptions ReadmeName
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-39768-1.html
首先得有
已经翻了