【问题标题】:PHP How to get the root url of a subdomainPHP如何获取子域的根URL
【发布时间】:2016-02-27 14:10:46
【问题描述】:

我曾经将我的网站放入如下域:www.mydomain.com
但现在我创建了一个子域“测试”:www.test.mydomain.com,并将整个项目文件移到那里。

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

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

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

我不想弄一个像拆分 url 和添加子域这样的把戏。

任何帮助将不胜感激。

【问题讨论】:

  • $_SERVER['DOCUMENT_ROOT'] 没有得到任何 URL。它获取当前站点文档根目录的绝对路径。要获取当前主机,您必须使用 $_SERVER['HTTP_HOST']

标签: php apache subdomain


【解决方案1】:

$_SERVER['DOCUMENT_ROOT']包含服务器名称!它包含 - 顾名思义 - DOCUMENT_ROOT。这是您的网络服务器所服务的文件系统启动的目录。

您应该改用$_SERVER['SERVER_NAME']。如果您的虚拟服务器设置正确,这应该可以工作。

【讨论】:

    【解决方案2】:

    你可以同时尝试:

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

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


    $_SERVER["SERVER_NAME"]

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

    $_SERVER['HTTP_HOST']

    Host 的内容:当前请求的标头,如果有的话。

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

    $_SERVER['DOCUMENT_ROOT'] 将无法按照文档中的说明工作

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

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

    【讨论】:

      【解决方案3】:

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

      我想这就是为什么我在调用$_SERVER['DOCUMENT_ROOT'] 时得到www.mydomain.com 没有子域

      谢谢,案件结案。

      【讨论】:

        猜你喜欢
        • 2011-07-14
        • 2012-01-19
        • 1970-01-01
        • 2014-09-19
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2017-01-26
        • 2010-09-22
        相关资源
        最近更新 更多