通常利用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指令了解相关推荐
- URL重定向之一.htaccess文件和AllowOverride指令
通常利用Apache的rewrite模块对URL进行重写的时候,rewrite规则会写在 .htaccess文件里.但是要使Apache能够正常读取 .htaccess文件的内容,就必须对 .htac ...
- Htaccess文件是什么以及Windows下自由创建.htaccess文件的N种方法
.htaccess是什么 概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置. 通过htaccess文件,可以帮我们实现:网页301重定向.自定义404错误 ...
- php的htaccess,PHP .htaccess文件详细介绍
1.什么是.htaccess文件及 .htaccess文件(或者"分布式配置文件")提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此 ...
- Apache服务器中的.htaccess文件的配置
如何在windows下创建.htaccess文件 首先, 暂且别管.htaccess是什么, 有什么作用, 让我们暂且解决首要问题:如何在windows下创建.htaccess文件. 在windows ...
- Apache伪静态(Rewrite).htaccess文件详解以及RewriteCond 规则
Htaccess(超文本访问)是一个简单的配置文件,它允许设计师,开发者和程序员通过它来改变Apache Web服务器的配置. 这些功能包括用户重定向.URL重写(url rewrite,国内很多称为 ...
- php的htaccess,深入理解PHP的.htaccess文件
深入理解PHP的.htaccess文件 导语:PHP是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.下面我们来深入理解PHP的.hta ...
- 【建站系列教程】6、.htaccess文件的url重写规则-网页伪静态化
[建站系列教程]6..htaccess文件的url重写规则-网页伪静态化 如何创建.htaccess文件? .htaccess是什么 htaccess语法教程 写在前面:大家好,我是热爱编程的小泽. ...
- 由laravel 5.5无法获取url中的参数引发的apache的.htaccess文件问题
一.前言 我这边碰到的问题就是,无法获取url中的get参数.本地使用的是laravel 5.5版本.明明url里面清清楚楚的写着参数,但是你却获取不到,这感觉实在是很气很气.刚开始以为是larave ...
- 修改apache2.config里的 AllowOverride All ,也已经把 .htaccess文件放入网站目录下 ,但无法访问网站(500错误,提示为服务器问题)
问题:已经修改apache2.config(非Ubuntu为 httpd.config)里的 AllowOverride All ,也已经把 .htaccess文件放入网站目录下 ,但无法访问网站(5 ...
最新文章
- win7变成xp风格了怎么改回_揭秘:干掉了win7!为何win10屡被吐槽它却“永世留芳”?...
- 百度站长工具进击site结果页面[SITE特型]
- Shell--shell中的判断
- 使用hibernate的this.getSession().createSQLQuery(sql).list();方法查询数据时出现查到的数据和想象的不一致,很是郁闷,诡异...
- C语言 字符串和指针
- Fabio技术手册(1):概述和快速上手
- js将docx转换为html,js 将word转换Html
- C#和NewSQL更配 —— TiDB入门
- Oracle中通过Job实现定时同步两个数据表之间的数据
- sqlplus中调用shell_记一次突破反弹shell
- vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
- 实时渲染学习(六)延迟渲染(Deferred Rendering)
- Camtasia简单视频剪辑教程分享:实力干货
- 红米html查看器,小米 红米【AC2100】一键刷BREED【30秒刷完】小白脑残专用 无需工具TELNET + 检查坏块...
- FPGA学习(第2节)-FPGA下载程序到flash+文件转换-通过.sof文件产生.jic文件
- OFFICE图标不正常显示的解决办法(转载)
- 卸载亚信安全杀毒软件
- 矩形连乘问题c语言,矩阵连乘问题
- AGV的关键技术与细节
- 使用lib库模式打包vue组件及组件引用
热门文章
- excel转换txt文本(matlab版本)
- 实验六:555定时器
- flex builder安装
- strtok_s的用法基本解释(2021-07-12)
- 前端-3D电子相册-高级版
- Spring Boot 产生的背景和它的设计理念
- 基于单片机的粮仓远程监控系统的设计
- python课营销骗局-朋友圈里的卖课广告,为什么让年轻人这么上头?
- 11-09 成长日记
- Pixel 2 XL 刷magisk