我想对运行在Windows中的Apache的httpd.conf文件进行更改,但我想知道为什么需要使用(或声明)相同的根两次。
DocumentRoot "C:/Apache/htdocs"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "C:/Apache/htdocs">
AllowOverride None
Order allow,deny
Allow from all
Options None
</Directory>如果第一个问题是关于安全性或访问DocumentRoot的,为什么我需要再次声明?
在这种情况下,是否可以传递最后的声明,如:< Directory "C:/Apache/htdocs">?
Apache可以运行省略最后一个< Directory "C:/Apache/htdocs">吗?
我找不到那种感觉。
谢谢。
发布于 2013-10-21 23:37:06
我来自UNIX/Linux,但我认为您有点误解了配置。让我们将您的配置分解为3部分(好吧,它已经分为3部分了)。
首先,DocumentRoot完全是自己的,对于您的问题/问题,忽略这一点。
其次,“目录/”被配置为拒绝所有用户。这不是针对您的DocumentRoot,而是针对您的文件系统的根(我不知道Apache是如何在Windows上解释这一点的,但是对于Linux和UNIX来说是正确的)。
第三,“目录"C:/Apache/htdocs”配置为允许所有来自DocumentRoot的目录。
这是基本的Apache性能和安全性调优,并且可能是目前为止几乎每个Apache发行版的默认设置。
第一个目录清单中的“AllowOverride无”使Apache无法检查文档根目录上的每个目录以进行重写(.htaccess文件)。
来自Apache文档:When this directive is set to None, then .htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess files in the filesystem.
因此,如果删除'Directory /‘节:那么Apache将在到达'Directory C:/Apache/htdocs’目录之前查找c:/..htaccess和c:/Apache/..htaccess。因为“AllowOverride无”设置为c:/Apache/htdocs,所以不会再看下去了。您的网站将加载,但您正在不必要地增加Apache必须做的工作来服务它。
现在,如果您删除'Directory "C:/Apache/htdocs"‘节:那么您将继续使用'Directory /’的设置,其中包括‘拒绝所有’。您的网站不会加载。
在我看来,配置是正确的。
https://serverfault.com/questions/547622
复制相似问题