首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何强制用户通过HTTPS而不是HTTP访问我的页面?

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

Stack Overflow用户
提问于 2008-09-17 17:51:06
回答 16查看 185.7K关注 0票数 142

我只想强制访问一个页面作为HTTPS页面(Apache上的PHP)。如何在不使整个目录需要HTTPS的情况下做到这一点?或者,如果您从HTTP页面向HTTPS页面提交表单,它是否通过HTTPS而不是HTTP发送表单?

下面是我的例子:

代码语言:javascript
复制
http://www.example.com/some-page.php

我希望它只能通过以下方式访问:

代码语言:javascript
复制
https://www.example.com/some-page.php

当然,我可以将所有指向此页面的链接指向HTTPS版本,但这并不能阻止某些愚蠢的人故意通过HTTP访问它……

我想的一件事是在PHP文件的头中放一个重定向,以检查以确保他们正在访问HTTPS版本:

代码语言:javascript
复制
if($_SERVER["SCRIPT_URI"] == "http://www.example.com/some-page.php"){
  header('Location: https://www.example.com/some-page.php');
}

但这不可能是正确的方式,不是吗?

EN

回答 16

Stack Overflow用户

发布于 2008-09-17 17:53:38

你可以在Apache上使用一个指令和mod_rewrite来完成:

代码语言:javascript
复制
<Location /buyCrap.php>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Location>

如果你愿意,你可以使用regular expressions使这个位置随着时间的推移变得更智能。

票数 47
EN

Stack Overflow用户

发布于 2015-06-23 18:37:32

我刚刚创建了一个.htaccess文件,并添加了:

代码语言:javascript
复制
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

很简单!

票数 19
EN

Stack Overflow用户

发布于 2010-12-23 23:47:02

代码语言:javascript
复制
// Force HTTPS for security
if($_SERVER["HTTPS"] != "on") {
    $pageURL = "Location: https://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    }
    header($pageURL);
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/85816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档