PHP如何获取子域的根URL

时间:2016-02-27 14:10:47

标签: php apache subdomain

我过去常常将自己的网站变成以下域名:www.mydomain.com
  但现在我已经创建了一个子域'测试' :www.test.mydomain.com我将整个项目文件移到那里。

到目前为止一直很好,问题是在我的 php 库中,我调用数据库连接等,我使用$_SERVER['DOCUMENT_ROOT']给我 URL 没有子域,例如

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

但我需要获得子域名的根目录,例如:www.test.mydomain.com

我不想制作一个分割网址并添加子域名的技巧。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

您可以尝试两种方式:

$_SERVER["SERVER_NAME"]

$_SERVER['HTTP_HOST']

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

$_SERVER["SERVER_NAME"]

  

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

$_SERVER['HTTP_HOST']

  

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

您可以在HTTP_HOST vs. SERVER_NAME处了解$_SERVER["SERVER_NAME"]$_SERVER['HTTP_HOST']之间的区别。

$_SERVER['DOCUMENT_ROOT']无法按照文档

中的说明运行
  

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

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

答案 1 :(得分:2)

$_SERVER['DOCUMENT_ROOT'] 包含服务器名称!它包含 - 如名称所示 - DOCUMENT_ROOT。这是文件系统启动的目录,即Web服务器所服务的目录。

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

答案 2 :(得分:0)

最后,经过两个小时的搜索,我与系统管理员进行了交谈,他清楚地知道他实际创建了一个别名域,它实际上反应为:www.test.mydomain.com

我猜这就是为什么当我拨打www.mydomain.com时,我获得$_SERVER['DOCUMENT_ROOT'] 没有子域的原因。

谢谢,案件结案。