1

跟进此处发布的问题:

如何强制用户通过 HTTPS 而不是 HTTP 访问我的页面?

我已将以下代码添加到一页,即我的 CART 目录的 index.php 页面。

if($_SERVER["HTTPS"] != "on")
{
    header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
    exit();
}

当我从索引页面开始浏览站点时,CART 目录中的所有文件都通过 HTTPS(我真正想要的)加载,但是如果我单击指向 CART 文件夹之外另一个页面的链接,它会返回到 HTTP。

这是如何工作的?对于 CART 目录中的页面,HTTPS 如何保持活动状态?如果我为 CART 目录中的页面键入 URL,则不会强制执行 HTTPS,这是有道理的。

网站网址是http://wtc.betaforming.com

试着把我的大脑包裹起来,谢谢。

布雷特

4

3 回答 3

1

我建议将这段代码添加到根目录中的 .htaccess 文件(如果您正在运行 Apache)中。

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{HTTPS} =off
    RewriteRule ^DIRECTORY1|DIRECTORY2|DIRECTORY3 https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    RewriteCond %{HTTPS} =on
    RewriteCond %{REQUEST_URI} !^/DIRECTORY1|DIRECTORY2|DIRECTORY3
    RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

将 DIRECTORY1、DIRECTORY2 等替换为要强制启用 HTTPS 的目录,然后反向执行(下面的代码),如果不是 DIRECTORY1、DIRECTORY2 等,则重定向到 HTTP。

希望这可以帮助

于 2012-11-13T21:26:39.793 回答
1
<?php 
// Require https
if ($_SERVER['HTTPS'] != "on") {
    $url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    header("Location: $url");
    exit;
}
?>

尝试将此添加到您尝试以 HTTPS 访问的文件中,它将强制浏览器以 HTTPS 加载。

于 2014-09-29T00:26:05.217 回答
1

您在问题中回答了自己的问题:

这是如何工作的?对于 CART 目录中的页面,HTTPS 如何保持活动状态?

...当你说:

我已将以下代码添加到一页,即我的 CART 目录的 index.php 页面。

看?您正在对购物车目录中的页面执行 HTTPS 要求,而不是在其他地方。这反映了您在网站上看到的内容。如果您想在站点范围内要求 HTTPS,请考虑使用您的网络服务器来强制执行该要求。例如Apachemod_rewrite你可以尝试这样的事情:

<IFModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IFModule>

编辑

在您帖子的评论中,您说“我试图了解从 index.php 页面浏览到 CART 目录中的其他页面时如何/为什么强制执行 HTTPS”。我的猜测(这是一个猜测,因为您没有向我们展示您的代码)是这些 URL 是以与 ssl 无关的方式构建的,如下所示:

<a href="/cart/some_page.html">I'm SSL-enabled on a page with HTTPS in the address bar</a>

不过,再一次,如果没有看到您的代码,就不可能说。

干杯

于 2012-11-13T21:43:30.013 回答