问题

以Ubuntu 22.04(其他LTS版本类似)和Apache2服务为例,我们一般会把网站资源放在 /var/www/html 中,又比如把提供给用户下载的安装包放在 download 目录下面,那么最终的下载链接就是:

https://xxx.com/download/abc.apk

这个 download 目录下面可能不只有一个apk,而是很多个资源文件,默认情况下,如果用户好奇打开https://xxx.com/download/,就会直接看见该目录下所有文件,甚至还可以逐级往上查看父目录。

有时候这并不是我们想要的结果,用户可能会看见我们未公开链接的资源,造成一些。

解决

本来问了一下各种GPT,发现给的答案都太麻烦了,而且还不一定靠谱。最终还是从互联网的汪洋中找到了一个简单的办法。

直接编辑Apache的配置文件:

1
vim /etc/apache2/apache2.conf

按I进入编辑模式后,找到这部分内容:

1
2
3
4
5
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

把第一行注释掉,改为None,即可:

1
2
3
4
5
6
<Directory /var/www/>
# Options Indexes FollowSymLinks
Options None
AllowOverride None
Require all granted
</Directory>

保存退出后,重启Apache服务就搞定了:

1
systemctl restart apache2

再次访问https://xxx.com/download/,就会出现403警告,但访问目录下最后一级资源链接不受影响。

废话

其实这些配置说明,在Apache官方的文档中都会有用法解释的,耐心找都能找到,只是文档庞大,我们没那么多心思去看,才来看二手文档,就像你现在读到了这里一样。