我有一台 Mac Mini Server,运行 macOS Sierra (10.12.2) 和 macOS Server (5.2)。它带有内置 Apache 服务器,设置为监听端口 80 和 443。它运行正常;文档可通过 HTTP 和 HTTPS 访问。
但是,一旦我SSLRequireSSL
在 .htaccess 文件中使用该指令,它就会停止工作。在浏览器中,当访问时https://www.example.com/path/document
,我看到以下内容:
禁止
您无权访问此服务器上的 /path/document。
Apache 服务器位于 www.example.com 端口 80
请注意,错误消息中提到了端口 80,尽管它是通过 HTTPS / 端口 443 提供服务的(我用 curl 检查了这一点 - 所以浏览器重定向不是问题)。但是这个可以与问题的根源相关。
在 Apache 错误日志中,显示以下内容:
[2017 年 1 月 29 日星期日 16:38:07.674342] [ssl:error] [pid 82204] [客户端 127.0.0.1:50195] AH02219:访问 /Users/Glorfindel/wwwroot/path/document 失败,原因:需要 SSL 连接
.htaccess 文件中的其他指令确实有效(例如Options -Indexes
)。
答案1
您没有访问 https。
您显示的错误清楚地表明:“Apache 服务器位于 www.example.com 端口 80”
确保您确实访问 https,确保没有将您发送到 http 的重定向(例如,使用您的浏览器 Web 控制台)。
根据您的评论,这里有一个提示可以帮助您了解发生了什么:
curl -I https://www.example.com/path/document
这将显示来自您的服务器的未缓存的答案,无论您是否有权访问,以及/或者您是否正在重定向到 http。