【发布时间】:2012-12-07 16:35:43
【问题描述】:
这似乎并不简单。我使用这个流行的功能来获取页面完整的 URL:
private function getBaseUrl() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
我的 PHP5 在 Windows 服务器上!这就是 $_SERVER["REQUEST_URI"] 为空的原因。我在 Windows 上使用了这个解决方法:
function fixRequestURI() {
if(!isset($_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'];
if($_SERVER['QUERY_STRING']) {
$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];
}
}
}
但是,它有点工作。我的完整网址是:
http://www.domain.com/web/en/contact/
奇怪的是,我得到了上述函数的结果:
http://www.domain.com/directory1/web/en/contact/index.php?go=3
这个,所谓的“directory1”是我的 domain.com 映射到的物理目录。我理解其中的含义,但是...如何在不进行任何修复、调整等的情况下轻松获得完整的 URL,就像在 JavaScript 中使用 document.location.href 一样?
谢谢
【问题讨论】: