【问题标题】:Double Slash at end of URL when going to HTTPS?转到HTTPS时,URL末尾的双斜杠?
【发布时间】:2011-02-18 08:47:07
【问题描述】:

我的网站目前根据网站上收集的数据使用 http 和 https 部分(表单数据使用 https)。

在我的索引页面上,PHP 代码位于顶部:

<?php
    session_start();
    ob_start();
    if( $_SERVER['SERVER_PORT'] == 443) {
        header('Location:http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])); 
        die();
    } 
?>

但是,页面无法加载,并且出现 404 错误。同样,当我使用头代码访问具有 https 安全性的部分时:

<?php
session_start();
ob_start();
    if( $_SERVER['SERVER_PORT'] == 80) {
        header('Location:https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF'])); 
        die();
    }
?>

当从 http 切换到 https 时,该站点没有响应并且由于某种原因会创建一个双斜杠。

例如:http://www.abc.com/,然后点击应该路由到enroll.php的按钮显示http://www.abc.com//enroll.php

为什么需要双斜杠,有人可以帮忙解决 404 错误吗?

【问题讨论】:

    标签: php html session slash


    【解决方案1】:

    dirname() 不能在 PHP_SELF 上工作,因为它不一定是一个完整的目录。

    dirname("/enroll.php") 将正确返回一个空字符串,这反过来又导致双 //

    你到底想做什么?

    【讨论】:

    • 嗯 - 我在另一个网站上有“完全”相同的公式,它确实起作用(参见 www.aabbenefits.com - 如果你点击联系我们,它会重定向到 https,你会看到双斜线)所以不知道为什么这个网站出现故障。我希望我的非安全页面保持 http,而安全页面需要 https。我在收集付款和 ssn 信息的安全页面上使用表格。
    • @J M 重点仍然是您用于构建 URL 的方法存在缺陷(无论是否是 404 的原因)。你试过$_SERVER["REQUEST_URI"]吗?
    • 还没有 - 对不起,我不是很先进,所以你建议我用 $_SERVER["REQUEST_URI"] 替换什么?当我在有问题的页面中间运行一个简单的“回声”语句时: 它只是以斜杠 / 的形式返回
    • Pekka - 我想我明白你现在在说什么了。我替换了以下内容: header('Location:https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF'])) ; with header('Location:https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]);这删除了双斜线!但是,我仍然无法弄清楚这个该死的 404 错误;)
    • @J M 4 这样可以持续吗?奇怪的。你能显示一个导致 404 的确切 URL 吗?您可以通过不在header() 中输出而是使用echo()die() 来对URL 进行测试输出吗?
    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    相关资源
    最近更新 更多