如何阻止用户通过URL直接访问服务器上的指定文件?
嘿,这个问题其实很常见,而且确实有不少简便的解决办法,不用搞复杂的文件夹结构或者繁琐操作~
阻止直接访问特定文件的简便方案
方法1:用.htaccess(适用于Apache服务器)
这是Apache环境下最常用的快速解决方案,你只需要在网站根目录(也就是存放index.html的文件夹)创建一个.htaccess文件,添加以下规则即可:
# 禁止直接访问file.txt <Files "file.txt"> Require all denied </Files>
(注:如果是Apache 2.2及更早版本,替换成Order Allow,Deny + Deny from all的组合也可以)
配置完成后,用户访问website.domain/file.txt时会直接收到403禁止访问的响应,完全看不到文件内容,同时不会影响你在服务器端读取这个文件。
方法2:Nginx服务器配置调整
如果你的服务器用的是Nginx,找到对应站点的配置文件(一般在/etc/nginx/sites-available/目录下),在server区块内添加这段规则:
location = /file.txt { deny all; return 403; }
保存配置后,执行sudo systemctl restart nginx重启服务,规则就会生效,效果和Apache的方案一致。
方法3:移至网站根目录外(最省心的无配置方案)
要是不想碰服务器配置,还有个更直接的办法:把file.txt从网站根目录移到根目录以外的服务器路径。比如你的网站根目录是/var/www/html/,可以把文件放到/var/www/目录下。
这样用户通过URL根本找不到这个文件,而你自己的后端程序如果需要读取它,依然可以通过服务器本地路径(比如/var/www/file.txt)正常访问,完全不需要任何配置,简单又稳妥。
扩展小技巧
如果以后需要阻止一类文件(比如所有.txt文件),可以用通配符批量配置:
- Apache的
.htaccess写法:
<FilesMatch "\.txt$"> Require all denied </FilesMatch>
- Nginx写法:
location ~* \.txt$ { deny all; return 403; }
内容的提问来源于stack exchange,提问作者user8663960
相关产品推荐
相关产品推荐

