【发布时间】:2012-10-02 04:56:23
【问题描述】:
因为header("Location: "); 标头需要与绝对路径而不是相对路径一起使用,所以我编写了这个函数来使用$_SERVER 变量获取绝对路径。
function getAbsolutePath($relativePath = "/site/123/") {
if (isset($_SERVER['HTTPS'])) {
$protocol = 'https';
} else {
$protocol = 'http';
}
$host = $_SERVER['HTTP_HOST'];
$port = $_SERVER['SERVER_PORT'];
$absolutePath = 'Location: ' . $protocol . "://" . $host . ":" . $port . $relativepath;
return $absolutePath;
}
这是这样做的完美方法,还是有任何更好的替代方法?
【问题讨论】:
-
"/site/123/"不是相对路径。它将从根目录开始。 -
@PLB 我认为 OP 真的意味着完整的主机+协议而不是相对路径。完整的主机在技术上是规范要求的,尽管这里很少有人倾向于使用它。 en.wikipedia.org/wiki/HTTP_location
-
从 HTTP 1.1 绝对 URI 总是以方案名称开头,后跟冒号。
-
是的,就是这样。根据 HTTP 1.1 RFC,
/site/123/不是绝对路径。 -
Zulakis,它不是一个(绝对)URI,但它肯定是一个绝对路径。