服务器/Apache 从 1.3 升级到 2.0 时在强制使用 HTTPS 和 WWW 时给我一个错误


Server/Apache upgrade from 1.3 to 2.0 gives me an error when forcing HTTPS and WWW

我的托管公司昨天给我发了电子邮件,告诉我他们正在升级Apache...所以今天早上我发现我的网站宕机了,无法正常工作。

问题是浏览器给了我"此网页有重定向循环"错误。托管公司不想提供帮助,但是经过一些调查,我已经找到了破坏网站的代码。

我需要强制SSL(https)和网站的www子域...下面的代码曾经这样做过,但现在它让我头疼......谁能帮我修改一下,因为我尝试过的所有方法都没有奏效?以下代码放在包含中,以便站点的每个页面强制(或重定向用户在域中使用 https 和 www)。

//force the subdoman and https://...
if($_SERVER["HTTP_HOST"] != 'www.mysite.co.uk'){
    header('HTTP/1.1 301 Moved Permanently');
    $forceurl = isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : '';
    header('Location: https://www.mysite.co.uk' . $forceurl);
    die();
}

if ($_SERVER['HTTPS'] != 1){
    $newurl2 = "https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; 
    header("location: $newurl2");
    die();
}
好吧,

我设法解决了所有这些问题...

我完全删除了上面的代码并在 .htaccess 中替换了它,就像这样......

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www'.myurl'.co'.uk [NC]
RewriteRule ^(.*)$ https://www.myurl.co.uk/$1 [R=301,L] 
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

然后我注意到我使用的支付 API 与该网站不起作用的问题,我在尝试进行购买/付款时不断收到以下消息,"收到的 HTTP 方法无效。只接受开机自检"。这很奇怪,因为我使用的是 POST!以下内容帮助我解决了这个问题。

收到的 HTTP 方法无效。仅接受开机自检

请注意,我的托管服务提供商在他们的升级指南/文档中没有涵盖这一点!我将在1and1与我的好朋友沟通!