我注意到大量的示例apacheconfiguration文件(和我的安装附带的)有一个块:Options FollowSymLinks AllowOverride None
但我无法理解或find这是什么的解释。 我的意思是,Web服务器在文档根目录以外的任何目录中将会做什么?
<Directory />实际上并不是指文件根目录,而是指文件系统根目录。 因此,创build一个<Directory />块是一种指定适用于服务器上任何位置的所有文件和目录的指令的方法。 它基本上作为默认设置。
这个想法是,你不希望有人能够通过例如上传一个.htaccess文件来破解你的服务器,只是因为你忘记在某个目录中禁用.htaccess文件。 所以,你首先禁用.htaccess文件,然后你不必担心。 您仍然可以使用特定目录的AllowOverride指令在需要的地方启用它们。 Options同样如此:其中一个是ExecCGI ,它允许在特定目录中执行CGI脚本。 显然,你不希望你系统上的任何随机程序可以作为CGI脚本运行; 你想把它们保存在一个特定的目录中。 因此,将ExecCGI保留在<Directory />块中的Options ExecCGI禁用整个文件系统的CGI执行,那么您可以将其启用到您想要的目录中。
有些方法可以生成不是来自文件系统文件的内容,但是…类似于mod_status ,它可以dynamic地创build一个服务器正在做什么的报告。 像这样的东西不会受到<Directory />块的影响。 因此,如果您的指令不是特定于文件的指令,而是真的要应用于整个服务器(它所服务的所有内容),则可以使用<Location /> 。