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

GitHub Action中用wget时.htaccess单URL访问配置为何返回403?

问题分析与解决方案

你的.htaccess配置存在两处关键错误,导致GitHub Action的请求被403拒绝:

错误1:mod_authz_core配置逻辑矛盾且条件错误

在mod_authz_core.c的配置块中:

<RequireAll>
Require all denied
Require expr %{HTTP_HOST} -strmatch '*.github.com'
</RequireAll>
  • <RequireAll>要求所有内部条件必须同时满足,但Require all denied直接拒绝所有请求,和后面的允许条件完全冲突,无论请求是什么都会返回403。
  • %{HTTP_HOST}是请求的目标域名(即你的www.myurl.com),不是请求发起方的域名,用它来匹配github.com完全不符合需求——你需要限制的是请求来源,而非目标地址。

错误2:未正确识别GitHub Action的请求来源

GitHub Action的请求来自GitHub的服务器,你需要验证的是请求发起方的主机/IP,而非目标主机。旧配置中Allow from .github.com(在非mod_authz_core块)的逻辑是对的(通过反向解析IP检查域名是否以github.com结尾),但mod_authz_core块的条件完全偏离了需求。

修正后的.htaccess配置

# 针对旧版Apache(无mod_authz_core)的配置
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
Allow from .github.com
</IfModule>

# 针对新版Apache(有mod_authz_core)的配置
<IfModule mod_authz_core.c>
Require all denied
Require host github.com
Require host .github.com
</IfModule>

修正说明:

  • 新版配置去掉了<RequireAll>,改用Require all denied后紧跟允许条件(Apache会默认用逻辑或处理多个Require指令,即满足任一允许条件就放行)。
  • 用Require host github.com和Require host .github.com来匹配请求来源的主机域名(通过反向解析IP验证),这和旧版Allow from .github.com的逻辑一致,正确识别GitHub服务器的请求。

额外验证建议

如果修正后仍有问题,可以在GitHub Action的wget命令中添加--verbose参数,查看请求的头部信息,或者在服务器上检查访问日志,确认请求的来源IP是否能反向解析到github.com域名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:00:28