好的,所以我需要我的网站自动将所有请求转发到服务器以获取http到https。我使用PHP没有真正的问题,但现在godaddy告诉我,我需要改变我这样做的方式。我的代码是否正确,如果我改变我是如何做到这一点的,哪种方法更好?在此先感谢您的帮助!
<?php
if ($_SERVER['SERVER_PORT']!=443)
{
$url = "https://". $_SERVER['SERVER_NAME'] . ":443".$_SERVER['REQUEST_URI'];
header("Location: $url");
}
?>
答案 0 :(得分:1)
您不需要包含端口号... https'默认端口已经是443。如果您在某个OTHER端口上运行https服务,则只需要一个显式端口号。同样,为什么重复重定向?你有2个if()块做同样的事情。
但是,仅测试端口443是不够的。您可以在任何端口上运行任何所需的服务。只是HTTPS通常是在443上。但没有什么说它是必须的。有$_SERVER['HTTPS']
明确说明您是否正在使用HTTPS。
答案 1 :(得分:0)
更好的方法是使用.htaccess和mod_rewrite进行重定向。
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
更详细地解释了这一点here。
答案 2 :(得分:0)
我会使用这里描述的东西:
我不想依赖端口443.有人可以将正常流量配置为443或使用另一个端口进行https(两者都很少见)。
此外,因为它是默认值,您可以省略“:443”...
答案 3 :(得分:0)
您可以使用htaccess执行此操作:
RewriteEngine On RewriteCond %{SERVER_PORT} !443 RewriteRule (.*) https://www.example.com/require-secure/ [R]
希望有所帮助
答案 4 :(得分:0)
我在我的.htaccess文件中使用此代码,效果很好:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.ch/$1 [R,L]