我的网站目前根据网站上收集的数据使用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错误?
答案 0 :(得分:2)
dirname()
无法在PHP_SELF
上运行,因为它不一定是完整目录。
dirname("/enroll.php")
会正确返回一个空字符串,这又会导致双//
。
你究竟想做什么?