PHP https url转发

时间:2011-11-24 16:47:14

标签: php forwarding

好的,所以我需要我的网站自动将所有请求转发到服务器以获取http到https。我使用PHP没有真正的问题,但现在godaddy告诉我,我需要改变我这样做的方式。我的代码是否正确,如果我改变我是如何做到这一点的,哪种方法更好?在此先感谢您的帮助!

<?php
if ($_SERVER['SERVER_PORT']!=443)
{
$url = "https://". $_SERVER['SERVER_NAME'] . ":443".$_SERVER['REQUEST_URI'];
header("Location: $url");
}
?>

5 个答案:

答案 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)

我会使用这里描述的东西:

enter link description here

我不想依赖端口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]