PHP 如何获取子域的根 URL


PHP How to get the root url of a subdomain

我曾经把我的网站放进一个域,比如:www.mydomain.com
但是现在我创建了一个子域"test":www.test.mydomain.com并将整个项目文件移到了那里。

到目前为止一切顺利,问题是在我的 php 库中,我调用 db 连接等,我使用 $_SERVER['DOCUMENT_ROOT'] 它为我提供了没有子域URL,例如。

$file = $_SERVER['DOCUMENT_ROOT'];//gives me www.mydomain.com 

但是我需要获取带有子域的根,例如:www.test.mydomain.com

我不想像拆分 url 并添加子域之类的技巧。

任何帮助将不胜感激。

$_SERVER['DOCUMENT_ROOT']不包含

服务器名称!顾名思义,它包含 DOCUMENT_ROOT .这是您的 Web 服务器服务的文件系统启动的目录。

您应该尝试$_SERVER['SERVER_NAME']。如果您的虚拟服务器设置正确,这应该有效。

您可以尝试两者:

$_SERVER["SERVER_NAME"]
$_SERVER['HTTP_HOST']

两者都将返回带有子域的域。


$_SERVER["SERVER_NAME"]

正在其下执行当前脚本的服务器主机的名称。如果脚本在虚拟主机上运行,这将是为该虚拟主机定义的值。

$_SERVER['HTTP_HOST']

主机的内容:来自当前请求的标头(如果有)。

您可以在HTTP_HOST与SERVER_NAME阅读$_SERVER["SERVER_NAME"]$_SERVER['HTTP_HOST']之间的区别。

$_SERVER['DOCUMENT_ROOT']不会按文档中所述工作

当前

脚本在其下执行的文档根目录,如服务器的配置文件中所定义。

有关$_SERVER的更多信息,请访问 http://php.net/manual/en/reserved.variables.server.php。

最后,经过两个小时的搜索,我与系统管理员交谈,他明确表示他实际上创建了一个别名域,它实际上反应为:www.test.mydomain.com

我想这就是为什么当我打电话给$_SERVER['DOCUMENT_ROOT']时,我会得到没有子域www.mydomain.com

谢谢,案件已结案。