这似乎并不那么简单。我使用这个流行的函数来获取页面完整的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,就像使用 document.location.href 的JavaScript一样?
由于
答案 0 :(得分:0)
试试这个:
<?
function getUrl(){
$http = 'http' . (@$_SERVER['HTTPS'] ? 's' : '');
$query = $_SERVER['QUERY_STRING'] ? "?$_SERVER[QUERY_STRING]" : '';
return "$http://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]$query";
}
它不会捕获锚点(在哈希#
标记之后)
答案 1 :(得分:0)
回答我的问题:这对我有用:
function getFullUrl() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER['HTTP_X_REWRITE_URL'];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER['HTTP_X_REWRITE_URL'];//$_SERVER["REQUEST_URI"] blank
}
return $pageURL;
}
如果在任何特殊情况下失败,请发送给我任何想法。