不要在ErrorDocument指令中使用绝对URL ErrorDocument 403 http://example.com/error/404 首先,您不应该在ErrorDocument指令中使用绝对URL!这将触发对目标URL的302响应(即302临时重定向)。因此,在第一个响应中,它不会将403(或404)响应发送回user-agent。 (此ErrorDocument指令格式只应在非常特殊的情况下使用,因为您还丢失了许多关于在第一个place.中触发响应的URL的信息) 要在同一台服务器上内部提供自定义错误文档,这应该是一个root-relativeURL,以斜杠开头(没有方案或主机名)。例如: ErrorDocument 403 /error/404 然而,/error/404不太可能是有效的end-point。这应该表示可以提供服务的有效资源。例如/error/404.html。 (这自然解决了必须指定HTTP vsHTTPS.的问题) 要回答您的具体问题。。。 因为上面的例子如果我使用https,我必须硬编码https 尽管可以说,现在你应该到处都是HTTPS。 但是,要执行要求的操作,可以使用REQUEST_SCHEME服务器变量执行以下操作,例如: ErrorDocument 403 %{REQUEST_SCHEME}://%{HTTP_HOST}/error/