【问题标题】:PHP https url forwardingPHP https url 转发
【发布时间】:2012-01-05 19:30:05
【问题描述】:

好的,所以我需要我的网站自动将所有请求转发到服务器,以获取 http 到 https。我使用 php 没有真正的问题,但现在 godaddy 告诉我我需要改变我这样做的方式。我的代码是否正确,我应该改变我这样做的方式,什么方法更好?提前感谢您的帮助!

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

【问题讨论】:

  • 如果 Godaddy 告诉您需要更改它……他们不是在告诉您将其更改为什么吗?或者为什么你应该这样做?
  • 当我问为什么我得到了我们不支持脚本并且只是改变它大声笑
  • 支持可能意味着两件事之一。 1. 提供所需的系统 2. 当它不起作用时提供技术援助。既然你说它确实有效,并且假设你没有要求他们为你解决问题……凭借这种解释质量,我会通过他们的支持服务或移动主机升级它(鉴于我听说过关于 Godaddy 的恐怖故事,我会自己移动主机)。

标签: php forwarding


【解决方案1】:

您不需要包含端口号... https 的默认端口已经是 443。如果您在某个 OTHER 端口上运行 https 服务,您只需要一个明确的端口号。同样,为什么重复重定向?你有 2 个 if() 块做完全相同的事情。

但是,仅测试端口 443 是不够的。您可以在任何端口上运行任何您想要的服务。只是HTTPS通常在443上。但没有什么说它必须是。 $_SERVER['HTTPS'] 会明确告诉您是否正在使用 HTTPS。

【讨论】:

  • 嘿 Marc 你能给我一个简单的例子吗,因为我不熟悉这部分 php。
  • if (!$_SERVER['HTTPS']) { ... not in SSL mode, do redirect }
【解决方案2】:

更好的方法是使用 .htaccess 和 mod_rewrite 进行重定向。

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

这在here有更详细的解释。

【讨论】:

    【解决方案3】:

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

    enter link description here

    我不想依赖端口 443。有人可以将正常流量配置到 443 或使用另一个端口进行 https(两者都很少见)。

    另外由于是默认设置,所以可以省略 ":443"...

    【讨论】:

    • 对于 HTTP_NOSSL 我将如何处理这是否适用于 php?或者别的什么。
    【解决方案4】:

    您可以使用 htaccess 来执行此操作:

    重写引擎开启 重写条件 %{SERVER_PORT} !443 RewriteRule (.*) https://www.example.com/require-secure/ [R]

    希望对你有帮助

    【讨论】:

    • 测试端口号不足。 https 通常在端口 443 上,但不要求它实际上在该端口上,或者某些其他服务在 443 上运行。
    【解决方案5】:

    我在我的 .htaccess 文件中使用了这段代码,效果很好:

    RewriteEngine On 
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://example.ch/$1 [R,L]
    

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 2014-10-11
      • 1970-01-01
      • 2015-01-22
      • 2010-09-27
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      相关资源
      最近更新 更多