由于header("Location: ");
标头需要使用绝对路径而不是相对路径,因此我使用$_SERVER
变量组成了一个绝对路径。PHP位置标头绝对路径
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 /“'不是相对路径。它将从根目录开始。 – Leri
@PLB我认为OP确实意味着完整的主机+协议,而不仅仅是相对路径。规范要求技术上完全支持主机,尽管这里有很少人倾向于使用它。 http://en.wikipedia.org/wiki/HTTP_location –
从HTTP 1.1中,_absolute URI总是以一个方案名和一个冒号开头._ –