【问题标题】:Force user to access the site using https:// ONLY强制用户仅使用 https:// 访问该站点
【发布时间】:2014-10-31 16:23:20
【问题描述】:

我想强制用户使用 https:// 访问我的网站,以便我使用以下 php 代码和 .htaccess 文件。

php代码:

if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
    if(!headers_sent()) {
        header("Status: 301 Moved Permanently");
        header(sprintf(
            'Location: https://%s%s',
            $_SERVER['HTTP_HOST'],
            $_SERVER['REQUEST_URI']
        ));
        exit();
    }
}

.htaccess 文件

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

例如,我的网站网址名称是:www.example.com。如果将 url 从 https:// 更改为 http://,它会成功重定向到 https://但是,如果我将 url 更改为 http://www.example.com。那么它不会去 https://。它接受 http://。

注意:我已经付费版本的 https://

我希望该用户在没有 HTTPS:// 的情况下无法访问我的网站。我该怎么做?

【问题讨论】:

标签: php regex


【解决方案1】:

如果您运行的是 Apache,最简单的方法是使用 .htaccess 自动将 http 访问重定向到 https。这是一个例子:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

将上述代码保存在根文件夹中现有的 .htaccess 文件中。如果您没有.htaccess 文件,您可以将以上内容另存为纯文本文件,并以.htaccess 名称保存。注意前面的'.'在文件名中。这很重要。将该文件上传到您的根目录。

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 2016-07-04
    • 2015-01-08
    • 2016-11-12
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 2016-07-18
    • 2021-06-25
    相关资源
    最近更新 更多