服务器如何设置网站目录访问限制
Overview
在弄隐私协议的时候,发现放到服务器上后用浏览器打开竟然可以访问到隐私协议index.html文件的上层目录,这就有点搞了。
因为个人的服务器部署的是LAMP开发环境,网上查了下,修改Apache配置解决了该问题。特在此记录,便于后期查看。
解决方式
要在 Apache 服务器上设置禁止访问某个目录,同时允许访问该目录下的特定格式文件,可以通过 .htaccess
文件或在 Apache配置文件中进行设置。以下是两种方法的示例:
方法一:使用 .htaccess
文件
创建或编辑
.htaccess
文件:
在你想要控制访问的目录下创建或编辑.htaccess
文件。添加以下内容:
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 配置文件中设置
- 编辑 Apache 配置文件:
可以使用find / -name httpd.conf
查找对应目录
1 | find / -name httpd.conf |
然后使用vim 修改
1 | vim /etc/httpd/conf/httpd.conf |
- 添加以下内容:
1 | <Directory /path/to/your/directory> |
解释:
<Directory /path/to/your/directory>
:指定你要控制访问的目录路径。- 其他配置项与
.htaccess
文件中的相同。
- 重启 Apache 服务:
保存配置文件后,重启 Apache 服务以使更改生效。
1 | sudo systemctl restart apache2 |
通过以上方法,你可以有效地禁止访问目录,同时允许访问目录下的特定格式文件。