我想将我的网站用户从http://mysite
重定向到https://mysite
。
如何在PHP中以编程方式执行此操作?
答案 0 :(得分:7)
您可以使用if(!empty($_SERVER['HTTPS']))
检查是否使用了SSL。
如果您使用的是标准端口,那么$_SERVER['SERVER_PORT'] == 443
的测试也会有效,但当然检查是否使用HTTPS比测试端口是否为默认SSL端口要好。
但是,重定向不应该通过PHP完成,而是通过.htaccess(如果你使用Apache):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
答案 1 :(得分:2)
使用$_SERVER['HTTPS']
确定。
答案 2 :(得分:2)
如果是https,则变量$_SERVER['HTTPS']
将设置为非零:
if (isset($_SERVER['HTTPS'])) {
# it's https
} else {
# it's not https
}
答案 3 :(得分:2)
如果$_SERVER['HTTPS']
设置为on
,则页面将通过https加载。但是,您应该将Cookie标记为安全,您可以使用setcookie
中的一个参数执行此操作。如果cookie不安全,它们可能通过未加密的http传输,并且可能被盗,即使用户被立即重定向也是如此。
http://php.net/manual/en/function.setcookie.php
对于实际的重定向,我使用.htaccess重写,而不是PHP。使用以下内容创建.htaccess文件。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteCond ^(.*)$ https://www.example.com/$1 [R=301,L]