我在服务器端应用程序上遇到了异常的行为。我想强制使用 HTTPS ,并且没有服务器的管理员权限才能更改配置。
我知道,我知道-这种问题经常被问到,但是没有一个答案对我有用。
我的搜索
搜索了一段时间后,即使尝试了所有发现的建议,我仍然一无所知。其中一些使用重写条件和规则,其他一些则尝试通过检查 $ _ SERVER ['HTTPS'] 或 ['SERVER_PORT '] ,然后相应地更改位置标题。建立https后,一个答案甚至添加了strict-transport-security-header。
EDIT :到目前为止,我在htaccess中尝试过:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^.* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
或RewriteCond为
RewriteCond %{HTTPS} !on
或使用RewriteRule
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
-
在php中,我尝试过:
if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off"){
$redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $redirect);
exit();
}
问题
问题是它要么没有重定向到 https ,仍然具有http不安全连接,要么尝试无限重定向,直到浏览器停止发出请求为止。值得一提的是,即使我输入了,也从未设置 $ _ SERVER ['HTTPS'] ,并且从未将 $ _ SERVER_PORT 从 80 更改为URL开头的https:// 。
更多信息:
有人知道可能是什么问题吗?