1

我的网站目前根据网站上收集的数据使用 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 错误吗?

4

1 回答 1

2

dirname()不会工作,PHP_SELF因为这不一定是一个完整的目录。

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

你到底想做什么?

于 2010-05-11T21:33:09.467 回答