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

标签 php ssl

跟进这里发布的问题:

How can I force users to access my page over HTTPS instead of HTTP?

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

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

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

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

站点 URL 是 http://wtc.betaforming.com

我正在努力解决这个问题,谢谢。

布雷特

最佳答案

我建议将这段代码添加到您根目录中的 .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。

希望对你有帮助

关于php - 强制用户通过 HTTPS 而不是 HTTP 访问我的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369039/

相关文章:

php - 是否有更好的循环遍历这些 PHP 代码的方法,也许使用 foreach 循环?

Python 如何添加网站支持我定义的协议(protocol)的打印异常

macos - 自签名 IdentityServer 证书不适用于 macos Monterey

soap - AXIS Soap Call - 仅将信任库用于自签名证书

http - 在 https 网站上加载 http 内容

php - 如何在 codeigniter 中接收 post/get 请求

php - 在 PHP 中 LDAP 搜索多个 DN

php - 更改订单项自定义元数据在 WooCommerce 管理员订单中显示的标签和值

php - 插入查询有时有效,但有时无效

c# - 任何人都可以制作假证书吗?