You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止访问EC2上Apache服务器的Web文件夹?

解决Apache下拦截特定文件夹访问的问题

第一步:确保Apache允许.htaccess生效

EC2上的Apache默认可能限制了.htaccess的权限,先检查站点配置文件(路径取决于系统:Amazon Linux在/etc/httpd/conf.d/,Ubuntu在/etc/apache2/sites-available/):
找到对应站点的<Directory>块,确保Web根目录(比如/var/www/html)配置了AllowOverride All(至少AllowOverride FileInfo),示例:

<Directory /var/www/html>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

修改后重启Apache服务:

  • Amazon Linux/RHEL:sudo systemctl restart httpd
  • Ubuntu/Debian:sudo systemctl restart apache2

第二步:配置.htaccess规则

在Web根目录下创建/编辑.htaccess文件,根据需求选择以下方案:

方案1:拦截指定精准路径

针对/include、/includes/images这类明确路径拦截:

RewriteEngine On
# 拦截/include目录(含末尾斜杠的情况)
RewriteRule ^include/?$ - [F,L]
# 拦截/includes/images目录
RewriteRule ^includes/images/?$ - [F,L]

规则说明:

  • RewriteEngine On:开启URL重写功能
  • ^include/?$:匹配以include开头、末尾可选斜杠的路径
  • [F,L]:F返回403禁止访问错误,L表示终止后续规则处理

方案2:拦截所有含特定关键词的路径

如果要拦截任何包含include的目录访问(比如/test/include、/includes/js等):

RewriteEngine On
RewriteRule ^.*include.*$ - [F,L]

方案3:禁止所有目录的直接访问

彻底禁止用户直接访问任何目录,仅允许文件访问:

# 关闭目录索引功能
Options -Indexes

RewriteEngine On
# 判断请求的是目录
RewriteCond %{REQUEST_FILENAME} -d
# 返回403错误
RewriteRule ^(.*)$ - [F,L]

第三步:验证与排查

  1. 访问目标测试路径(比如www.mywebsite.com/include),确认返回403错误
  2. 检查.htaccess权限:设置为644,所有者设为Apache运行用户(apache或www-data),执行命令:
    sudo chmod 644 /var/www/html/.htaccess && sudo chown apache:apache /var/www/html/.htaccess
    
  3. 若规则不生效,查看Apache错误日志(/var/log/httpd/error_log或/var/log/apache2/error.log),排查配置语法或权限问题

内容的提问来源于stack exchange,提问作者Yuval Sh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:51:29