我只想强制访问一个页面作为HTTPS页面(Apache上的PHP)。如何在不使整个目录需要HTTPS的情况下做到这一点?或者,如果您从HTTP页面向HTTPS页面提交表单,它是否通过HTTPS而不是HTTP发送表单?
下面是我的例子:
http://www.example.com/some-page.php
我希望它只能通过以下方式访问:
https://www.example.com/some-page.php
当然,我可以将所有指向此页面的链接指向HTTPS版本,但这并不能阻止某些愚蠢的人故意通过HTTP访问它……
我想的一件事是在PHP文件的头中放一个重定向,以检查以确保他们正在访问HTTPS版本:
if($_SERVER["SCRIPT_URI"] == "http://www.example.com/some-page.php"){
header('Location: https://www.example.com/some-page.php');
}
但这不可能是正确的方式,不是吗?
发布于 2008-09-17 17:53:38
你可以在Apache上使用一个指令和mod_rewrite来完成:
<Location /buyCrap.php>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Location>
如果你愿意,你可以使用regular expressions使这个位置随着时间的推移变得更智能。
发布于 2015-06-23 18:37:32
我刚刚创建了一个.htaccess文件,并添加了:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
很简单!
发布于 2010-12-23 23:47:02
// 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);
}
https://stackoverflow.com/questions/85816
复制相似问题