我已经阅读了大量有关此内容的文章,并且开始有点困惑哪种方法才是正确的。
我没有文件httpd.conf
,但是我在这里有一个apache2.conf
文件:/etc/apache2/apache2.conf
<Directory /var/www/html/>
Options -Indexes
</Directory>
(注明目录)
此外,标准站点可在此处找到:/etc/apache2/sites-available/000-default.conf
那么我应该添加下面哪个文件的内容?
<Directory />
Options -Indexes
</Directory>
(如果放在这里就不需要注明目录,对吗?)
此外,文件内部000-default.conf
还有类似 5 次的目录,就像这样......
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
那么我可以编辑其中一个吗?还是我必须做一些完全不同的事情.htaccess
?我相信这也可以。
答案1
您可以将其放在任意文件中的任何位置。
但是,将一个内容放在一个文件中而不是另一个文件中的原因取决于你。
好吧,当你第一次遇到这些东西时,你可能会感到困惑,但它也很简单。下面是详细分析。
首先,httpd.conf
与 100% 相同apache2.conf
。唯一的区别是/etc/httpd/httpd.conf
RedHat/CentOS 使用的 和/etc/apache2/apache2.conf
Debian/Ubuntu 使用的 。
接下来,什么是/etc/apache2/apache2.conf
versus /etc/apache2/sites-available/000-default.conf
versus /var/www/html/.htaccess
?好问题,下面是答案。
/etc/apache2/apache2.conf
这是根/父 Apache 配置文件。如果您 100% 确定该计算机上的 Apache 服务器无论如何都不应该执行目录列表,只需在其中设置它。这将为服务器和计算机上的所有虚拟主机设置默认值:
<Directory /var/www/html/>
Options -Indexes
</Directory>
通过重新启动 Apache sudo service apache2 restart
,您就可以开始了。
/etc/apache2/sites-available/000-default.conf
这是 Apache 服务器的虚拟主机默认配置。此配置与此配置的主要区别在于,/etc/apache2/apache2.conf
这000-default.conf
通常是人们针对其服务器进行调整和调整的地方。其优点是它简短而实用,如果需要,只需几行配置即可。缺点是,如果您使用虚拟主机,此处的设置将被另一个虚拟主机配置忽略。但如果您 100% 确定您只在设置中的一个主机上使用 Apache,那么这样做没有问题。
/var/www/html/.htaccess
我个人认为这是做类似事情的最佳位置。只要您的主/etc/apache2/apache2.conf
设置为AllowOverride All
(即启用.htaccess
),这将是最简单的维护。主要是因为对apache2.conf
和000-default.conf
以及中的任何内容的调整/etc/apache2/
都需要管理员/根用户重新启动 Apache。
一些老派的开发人员可能有人说使用.htaccess
不是一个好主意,因为它会强制 Apache 在每次页面加载时加载该文件,但在现代系统上,这是一个微不足道甚至不存在的问题。如果不使用 ,您可能会在页面加载时节省几分之一秒的时间.htaccess
,但这在当今毫无意义。
如果您选择使用它,则.htaccess
无需执行诸如在中定义它之<Directory /var/www/html/>
类的操作。只需创建一个名为的文件.htaccess
并将其内容设为:
Options -Indexes
保存它,你就没问题了。当然,如果有人删除、重命名或弄乱该文件并将其更改为Options +Indexes
目录列表,就会再次发生这种情况。但就像我说的,所有这些配置选项都取决于需要和用途;并且没有一种最佳/权威的方法来做到这一点。
但希望这些选项能为您提供有关如何在 Apache 中禁用目录列表的想法。
此外,关于发生位置的层次结构,如果您在 中有一个设置apache2.conf
,然后在 中又有另一个设置000-default.conf
,然后在 中又有另一个设置,.htaccess
那么 中的最终编辑才是最重要的。您基本上希望在或 中.htaccess
设置所有合理且广泛的系统范围配置,然后将站点特定内容留在 中。apache2.conf
000-default.conf
.htaccess
重要的是最后一个设置。这是一堆层层叠加的设置,说实话一切可以,apache2.conf
但配置只是被拆分,以便让你的生活更轻松。你可以将配置拆分成小文件,而不是一个庞大的整体配置。