首页 > 解决方案 > 使用 Slim API 框架通过 htaccess 将 http 转发到 https

问题描述

我正在尝试保护使用 Slim 框架并使用 htaccess 文件将所有流量转发到允许 API 工作的 index.php 的 API。

例如,使用 htaccess 中的以下设置调用http://api.mydomainname.co.uk/expert/id=MB7763255可以完美地工作:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule . index.php [L]

现在我正在尝试将所有 HTTP 流量强制到 HTTPS,并且我在 htaccess 文件中尝试了许多变体,这些变体确实转发了流量,但随后停止了我的 Web 服务工作,显示“404 未找到”。

这是我一直在尝试的:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

或者...

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%/index.php [R=301,L]

两者都没有成功 - 任何人都可以指出我正确的方向,因为我已经用尽了 Stack Overflow 和 Google。

标签: .htaccessapihttpsurl-redirection

解决方案


解决它!我会为其他遇到同样问题的人发布这个。

RewriteEngine on

RewriteBase /

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule . index.php [L]

推荐阅读