这很奇怪,但由于某种原因,$_SERVER["SCRIPT_URI"]
在我处于子/子页面时不会返回域名,但只能在主页面上工作。不确定它是由于脚本(WordPress)还是主机,但请您建议使用PHP检索域名的任何可靠解决方案吗?
答案 0 :(得分:22)
如果您需要域名,请使用:
$_SERVER['HTTP_HOST']
答案 1 :(得分:20)
如有疑问
var_dump($_SERVER);
答案 2 :(得分:6)
根据您的需要,我会使用以下其中一项:
编辑:也许PHP_SELF不是最好的。见评论。
答案 3 :(得分:4)
这可能是由于URL重写,如果你想要在网址中调用的路径,你可以试试$ _SERVER ['REQUEST_URI']。
答案 4 :(得分:1)
SCRIPT_URI
不喜欢,因为当您的站点使用根域运行时,它没有任何价值。它仅在使用子目录时出现。
HTTP_HOST
在处理子目录时不是一个好主意
使用以下代码获取SCRIPT_URI
:
$SCRIPT_URI = $_SERVER['REQUEST_SCHEME']."://".$_SERVER['HTTP_HOST'].'/'.ltrim(dirname($_SERVER['SCRIPT_URL']),'/');
答案 5 :(得分:0)
var_dump($_SERVER)
并了解您的需求。
P.S。使用未经过审核的$_SERVER["PHP_SELF"]
可以是security risk。
答案 6 :(得分:0)
此外,SCRIPT_URI不存在,正确的语法是REQUEST_URI:
echo $_SERVER["REQUEST_URI"];
它返回没有主机和域的整个路径。
答案 7 :(得分:0)
我在我的网站上使用$ _SERVER [SCRIPT_URI] http://www.a2zidx.com 和许多子目录一样 http://howto.a2zidx.com
多年来我一直没有遇到任何问题,今天在许多未分配$ _SERVER [SCRIPT_URI]的网站上出现错误。在联系我的isp后,他们声称他们没有做任何更改,但$ _SERVER [SCRIPT_URI]不再有效。 getenv('SCRIPT_URI')不会失败但返回空字符串。为什么这会在这么多年后突然发生我不知道。我最后调用一个函数来通过各种选项来提取我想要的文件名。希望这涵盖了一切。我在包含该功能时遇到了麻烦,但检查过 “SCRIPT_NAME” “PHP_SELF” “SCRIPT_FILENAME “SCRIPT_URI”
希望他的帮助。
如果有人知道为什么SCRIPT_URI会突然停止工作,我很想知道。服务器当前正在运行Apache 2.4。
答案 8 :(得分:0)
迟到的回复。我使用这段脚本在我的数据库中存储信息。希望这可以帮助某人。如何获取您的完整URL和客户端访问的IP地址。
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
$url = $_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];
echo $ip;
echo "<br>";
echo $url;
答案 9 :(得分:0)
在Apache上,SCRIPT_URI仅在启用mod_rewrite时存在。
Apache要求:
rewrite_module(注意:使用平台特定的加载语法)
和
RewriteEngine开启
Apache配置文件中相应位置的声明。
然后重新启动Apache,它应该可以正常工作。
答案 10 :(得分:-3)
如果您的浏览器很好地格式化JSON
文档并且没有输出,那么插入以下内容会比var_dump
更具可读性:
header('Content-Type: application/json');die(json_encode($_SERVER));
phpinfo()
还会提供所有$_SERVER
值的列表等等!