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

Apache防护优化:网站扫描时提前返回403(无论文件是否存在)

Apache 提前返回403状态码(无论文件是否存在)

完全可行,你当前用的<DirectoryMatch>和<Files>指令确实只对服务器上实际存在的文件/目录生效,没法拦截那些针对不存在路径的扫描请求——而要实现“不管文件存不存在都返回403”的需求,用Apache的mod_rewrite模块就可以搞定,它的规则不依赖文件系统的实际内容,能在请求处理的早期阶段就触发,直接返回403,避免后续Apache、PHP或MySQL的资源消耗。

具体配置示例

直接在你的Apache虚拟主机配置或者全局配置里添加以下规则:

RewriteEngine On

# 拦截所有包含.git的请求路径,无论文件/目录是否存在
RewriteRule ^.*\.git.*$ - [R=403,L]

规则解释

  • RewriteEngine On:先开启rewrite模块(需要确保mod_rewrite已经启用,后续会说怎么检查)
  • RewriteRule ^.*\.git.*$ - [R=403,L]:匹配任何URL路径中包含.git的请求,直接返回403状态码;L标记表示这是最后一条规则,Apache不会再处理后续的rewrite规则,提前终止请求流程。

如果要扩展拦截其他常见的恶意扫描路径(比如WordPress的wp-admin、xmlrpc.php这类),直接追加规则就行:

RewriteEngine On

# 拦截.git相关请求
RewriteRule ^.*\.git.*$ - [R=403,L]
# 拦截WordPress后台及远程调用接口
RewriteRule ^.*wp-admin/.*$ - [R=403,L]
RewriteRule ^.*xmlrpc\.php$ - [R=403,L]
# 可根据需求添加更多拦截规则,比如shell脚本、备份文件等
RewriteRule ^.*\.(sh|bak|sql)$ - [R=403,L]

注意事项

  • 启用mod_rewrite:在RHEL/CentOS系统中,先通过httpd -M | grep rewrite检查模块是否加载,如果没有输出,需要编辑/etc/httpd/conf.modules.d/00-base.conf,确保LoadModule rewrite_module modules/mod_rewrite.so这一行没有被注释,然后重启httpd服务:systemctl restart httpd。
  • 配置位置:对于RPM包部署,建议把这些规则放在虚拟主机的<VirtualHost>块中,或者全局的Apache配置文件里,尽量不要依赖.htaccess(需要AllowOverride权限,且性能不如直接写在主配置里)。

内容的提问来源于stack exchange,提问作者Linux Techie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:20:12