服务器如何设置网站目录访问限制

Overview

在弄隐私协议的时候,发现放到服务器上后用浏览器打开竟然可以访问到隐私协议index.html文件的上层目录,这就有点搞了。

因为个人的服务器部署的是LAMP开发环境,网上查了下,修改Apache配置解决了该问题。特在此记录,便于后期查看。

解决方式

要在 Apache 服务器上设置禁止访问某个目录,同时允许访问该目录下的特定格式文件,可以通过 .htaccess 文件或在 Apache配置文件中进行设置。以下是两种方法的示例:

方法一:使用 .htaccess 文件

  1. 创建或编辑 .htaccess 文件
    在你想要控制访问的目录下创建或编辑 .htaccess 文件。

  2. 添加以下内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 禁止访问目录
    Options -Indexes

    # 禁止所有文件访问
    <FilesMatch ".*">
    Order Deny,Allow
    Deny from all
    </FilesMatch>

    # 允许特定格式的文件访问
    <FilesMatch "\.(txt|html|jpg|png)$">
    Order Allow,Deny
    Allow from all
    </FilesMatch>

解释:

  • Options -Indexes:禁止目录列表。
  • <FilesMatch ".*">:匹配所有文件,禁止访问。
  • <FilesMatch "\.(txt|html|jpg|png)$">:匹配特定格式的文件(例如 .txt, .html, .jpg, .png),允许访问。

方法二:在 Apache 配置文件中设置

  1. 编辑 Apache 配置文件

可以使用find / -name httpd.conf查找对应目录

1
find / -name httpd.conf

然后使用vim 修改

1
vim /etc/httpd/conf/httpd.conf
  1. 添加以下内容
1
2
3
4
5
6
7
8
9
10
11
<Directory /path/to/your/directory>
Options -Indexes
<FilesMatch ".*">
Order Deny,Allow
Deny from all
</FilesMatch>
<FilesMatch "\.(txt|html|jpg|png)$">
Order Allow,Deny
Allow from all
</FilesMatch>
</Directory>

解释:

  • <Directory /path/to/your/directory>:指定你要控制访问的目录路径。
  • 其他配置项与 .htaccess 文件中的相同。
  1. 重启 Apache 服务
    保存配置文件后,重启 Apache 服务以使更改生效。
1
sudo systemctl restart apache2

通过以上方法,你可以有效地禁止访问目录,同时允许访问目录下的特定格式文件。