既不能通过$ _SERVER也不能通过.htaccess强制HTTPS

时间:2019-01-20 21:12:48

标签: php .htaccess

我在服务器端应用程序上遇到了异常的行为。我想强制使用 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://

更多信息:

  • 我从未同时使用.htacces和php进行重定向。
  • .htaccess可以正常工作,因为我尝试了其他重定向
  • PHP版本:5.4.45
  • Apache版本:2.2.22
  • 我曾经删除了所有.htaccess文件,即使我使用www.domain.com,也仍然重定向到https。但是我无法复制它,它并没有一直发生,而是看起来很随机

有人知道可能是什么问题吗?

0 个答案:

没有答案