我在 https://writeapp.me 有一个服务器只允许 SSL 连接。它位于 Chrome 和 Firefox HSTS 列表中,使用 HSTS header ,并包含一个重写规则以将任何 HTTP 请求重定向到 HTTPS。
此设置非常适合使用网络浏览器的临时用户,但现在我正在开发一个 API,我需要对一个路径的任何非 HTTPS 请求都拒绝并且不重定向.
该 API 将位于 https://writeapp.me/api/ .我希望所有包含 /api
的 HTTP 请求返回 400 Bad Requests 或 403 Forbidden(不确定哪个状态最有意义),而所有其他普通 HTTP 请求可以继续重定向到它们的 HTTPS 对应请求.
计划将这些规则包含在 vhost 配置中,而不是 htaccess 文件中。 /api
不是实际目录,它只是框架提供的路径,因此 /api
内的 .htaccess 文件将无法工作。 (我想这并不重要。我只是在这里更加详细)。
最佳答案
您可以使用 SSLRequireSSL
在您的目录配置中。
像这样:
<Location /api>
SSLRequireSSL
</Location>
当然,您需要将其放置在正确的位置(取决于您的其余配置),以便它优先于潜在的重写/重定向。
关于apache - 如何让 Apache 完全拒绝一个目录的非 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24701984/