在VirtualHosts内部或外部放置Directory标签有什么区别? 我发现一个configuration文件有几个VirtualHosts里面都有相同的Directory标签,外面是一样的; 所以我想摆脱这种重复,但我不完全理解所涉及的语义。
一个<VirtualHost>内的<Directory>将只适用于通过VHost访问的目录中的文件。 <VirtualHost>之外的<Directory>将始终应用(当然,除非在<VirtualHost>或其他地方重写)。
从安全的angular度来看,你可以争论双方:额外的访问级别( AllowOverride all ,f.ex.)在<VirtualHost>内部configuration可能更为明智,因为另一个VHost脚本之间的不可预见的交互可能允许你启动XSS攻击。 访问限制( Deny from all , Allow from 127.0.0.1 )在<VirtualHost>之外具有更多的意义,以防通过类似顶级别名或ScriptAlias的后门。 然后你进入了一个非常复杂的可能性: AllowOverride all在.htaccess的访问限制在哪里去,因为可能有一个VHost因为性能或者安全原因禁用了脚本引擎,但是这个文件会暴露一个文件敏感信息通常由.htaccess保护?
在一天结束的时候,将<Directory>放在哪里最终是三件事的组合,按照重要性的顺序排列:
Include最大化易读性的措施)。