A-A+

apache的AllowOverride以及Options使用详解

2018年09月18日 PHP技术文章 暂无评论 阅读 0 views 次

通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。

AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。对于AllowOverride,还可以对它指定如下一些能被重写的指令类型.

通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override ,即如下代码:

  1. <Directory />   
  2. AllowOverride None   
  3. </Directory>  

在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 ".htaccess" 作用域的指令都允许出现在 .htaccess 文件中。

而对于 URL rewrite 来说,至少需要把目录设置为如下代码:

  1. < Directory /myblogroot/>   
  2. AllowOverride FileInfo   
  3. < /Directory>   

2.在要支持url rewirte的目录启用 Options FollowSymLinks和AllowOverride All 代码如下:

  1. Alias /php "c:/web/php/"   
  2. <Directory "c:/web/php/">   
  3. Options Indexes FollowSymLinks   
  4. AllowOverride All   
  5. Order allow,deny   
  6. Allow from all   
  7. </Directory>   

这样通过http://localhost:8080/php/访问时,/php/和其下面的子目录将支持url rewrite

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

1 All 准许以下除MultiViews以外所有功能

2 MultiViews 允许多重内容被浏览,如果你的目录下有一个叫做foo.txt的文件,那么你可以通过/foo来访问到它,这对于一个多语言内容的站点比较有用

3 Indexes 若该目录下无index文件,则准许显示该目录下的文件以供选择

4 IncludesNOEXEC 准许SSI,但不可使用#exec和#include功能

5 Includes 准许SSI

6 FollowSymLinks 在该目录中,服务器将跟踪符号链接。注意,即使服务器跟踪符号链接,它也不会改变用来匹配不同区域的路径名,如果在;标记内设置,该选项会被忽略

7 SymLinksIfOwnerMatch 在该目录中仅仅跟踪本站点内的链接

8 ExecCGI 在该目录下准许使用CGI

标签:

给我留言