[英]Get $_SERVER[“REQUEST_URI”] in PHP5 running on Windows
它似乎並不簡單。 我使用這個流行的功能來獲取頁面的完整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映射到的物理目錄。 我了解其中的含義,但是...如何像使用JavaScript那樣使用document.location.href輕松獲得完整的URL,而無需進行任何修復,調整等?
謝謝
嘗試這個:
<?
function getUrl(){
$http = 'http' . (@$_SERVER['HTTPS'] ? 's' : '');
$query = $_SERVER['QUERY_STRING'] ? "?$_SERVER[QUERY_STRING]" : '';
return "$http://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]$query";
}
但是,它不會捕獲錨點(在井號#
標簽之后)
回答我的問題:這對我有用:
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;
}
如果在任何特殊情況下可能會失敗,請寄給我任何想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.