我使用这段代码来获得完整的URL:
$actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
问题是我在我的.htaccess中使用了一些掩码,所以我们在URL中看到的并不总是文件的真实路径。
我需要的是得到URL, URL中写了什么,不多不少——完整的URL。
我需要得到它如何出现在web浏览器的导航栏,而不是服务器上文件的真实路径。
我使用这段代码来获得完整的URL:
$actual_link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
问题是我在我的.htaccess中使用了一些掩码,所以我们在URL中看到的并不总是文件的真实路径。
我需要的是得到URL, URL中写了什么,不多不少——完整的URL。
我需要得到它如何出现在web浏览器的导航栏,而不是服务器上文件的真实路径。
当前回答
我用了这句话。
$base = "http://$_SERVER[SERVER_NAME]:$_SERVER[SERVER_PORT]$my_web_base_path";
$url = $base . "/" . dirname(dirname(__FILE__));
其他回答
这是你问题的解决方案:
//Fetch page URL by this
$url = $_SERVER['REQUEST_URI'];
echo "$url<br />";
//It will print
//fetch host by this
$host=$_SERVER['HTTP_HOST'];
echo "$host<br />";
//You can fetch the full URL by this
$fullurl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo $fullurl;
清晰的代码,工作在所有的web服务器(Apache, nginx, IIS,…)
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
HTTP_HOST和REQUEST_URI必须加引号,否则会在PHP 7.2中抛出错误
使用:
$actual_link = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
如果你想同时支持HTTP和HTTPS:
$actual_link = (isset($_SERVER['HTTPS']) ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
我觉得这个方法不错,试试吧
if($_SERVER['HTTP_HOST'] == "localhost"){
define('SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
define('SITEPATH', $_SERVER['DOCUMENT_ROOT']);
define('CSS', $_SERVER['DOCUMENT_ROOT'] . '/css/');
define('IMAGES', $_SERVER['DOCUMENT_ROOT'] . '/images/');
}
else{
define('SITEURL', 'http://' . $_SERVER['HTTP_HOST']);
define('SITEPATH', $_SERVER['DOCUMENT_ROOT']);
define('TEMPLATE', $_SERVER['DOCUMENT_ROOT'] . '/incs/template/');
define('CSS', $_SERVER['DOCUMENT_ROOT'] . '/css/');
define('IMAGES', $_SERVER['DOCUMENT_ROOT'] . '/images/');
}
试试这个:
print_r($_SERVER);
$_SERVER是一个包含诸如头文件、路径和脚本位置等信息的数组。该数组中的条目是由web服务器创建的。不能保证每个网络服务器都会提供这些;服务器可能会省略一些,或者提供这里没有列出的其他内容。也就是说,在»CGI/1.1规范中考虑了大量这些变量,所以你应该能够预料到这些变量。
$HTTP_SERVER_VARS包含相同的初始信息,但不是一个超全局变量。(注意$HTTP_SERVER_VARS和$_SERVER是不同的变量,PHP会这样处理它们)