在apache的配置文件里一般都有这样的几句命令:
<Directory "/Library/WebServer/Documents">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
这表示在<Directory></Directory>间定义了对"/Library/WebServer/Documents"这一路径下的文件及子目录的指令(directives)。但如果其子目录有自己的<Directory></Directory>,就会以自己的<Directory></Directory>为准,以上的指令会被覆盖。比如
<Directory "/Library/WebServer/Documents/afolder">
Options -Indexes
AllowOverride None
Order allow,deny
Allow from none
</Directory>
"/Library/WebServer/Documents/afolder"目录不允许访问,切不再有Indexes。"-Indexes"的减号表示去除从父目录继承的这一选项,同理"+"表示增加一个选项。
"Options Indexes FollowSymLinks MultiViews"表示赋予该目录Indexes FollowSymLinks MultiViews这三个选项。
Indexes:允许列出目录下的内容,如果该目录不包含index.html(or index.php...)。如果不希望服务器列出目录内容,则可以删掉此选项。
FollowSymLinks:允许访问软链接指向的文件。比如用"
ln -s ~/origin.html /Library/WebServer/Documents/target.html创建的软链接target.html,当访问http://localhost/target.html的时候,apache就会读取~/origin.html并返回。如果没有FollowSymLinks,则无法访问。这是apache用来访问服务器目录以外的文件一个方法,此外还有Alias等方法。
MultiViews:参见http://hi.baidu.com/gguoyu/item/bea82b10aba0140bb88a1a6b。大致是"如果服务器收到对/some/dir/foo的请求,而/some/dir/foo并不存在,但是如果/some/dir启用了MultiViews ,则服务器会查找这个目录下所有的foo.* 文件,并有效地伪造一个说明这些foo.* 文件的类型表,分配给他们相同的媒体类型及内容编码,并选择其中最合适的匹配返回给客户。"此选项可能造成.htaccess重写规则失效。
“AllowOverride None” 表示禁止重写。如果需要使用.htaccess进行url重写,则需至少设置成"AllowOverride FileInfo"。详见http://httpd.apache.org/docs/current/mod/core.html#allowoverride。
" Order allow,deny
Deny from ip1 [ip2..]
Allow from all"用于决定是否允许某个用户访问。http://www.cnblogs.com/top5/archive/2009/09/22/1571709.html这篇文章写得很详细,但总结得有些模糊。在此用自己的语言整理下:
设"Deny from"中的用户为deny_array[],"Allow from"中的用户为allow_array[]。apache会以如下方式判断是否允许一个用户(user1)访问:
在"Order allow,deny"的情况下:
if user1 in allow_array:
if user1 in deny_array:
return 'deny'
else:
return 'allow'
else:
#如果不在allow_array里直接拒绝,无论deny_array里是什么
return 'deny'
在"Order deny,allow"的情况下:
if user1 in deny_array:
if user1 in allow_array:
return 'allow'
else:
return 'deny'
else:
#如果不在deny_array里全部放行
return 'allow'
"Deny from"和"Allow from"的顺序不重要。可以用"All"和"None"表示所有和无,如"Allow from all","Deny from None",但仍遵循上述规律。如果省略"Deny from"且/或"Allow from",可以视为对应的deny_array,allow_array为空,仍遵循上述规律。
本文深入解析了Apache配置文件中的Directory指令及其子目录如何影响文件和子目录的访问权限,包括Indexes、FollowSymLinks、MultiViews选项,以及AllowOverride、Order、Allowfrom等规则的详细解释。
945

被折叠的 条评论
为什么被折叠?



