【问题标题】:Subdomain as part of REQUEST_URI子域作为 REQUEST_URI 的一部分
【发布时间】:2014-12-15 22:22:40
【问题描述】:

我有一个本地站点:http://domain.loc/,该站点有子域:http://sub.domain.loc/。 如何配置我的Apache 服务器 || PHP 让他返回全局变量:$_SERVER['REQUEST_URI'] 和我的子域名(本例中为“sub”)?

例子:

如果我打开页面http://domain.loc/,那么$_SERVER['REQUEST_URI'] 将等于/
如果我打开页面http://sub.domain.loc/,那么$_SERVER['REQUEST_URI'] 将等于/sub/

【问题讨论】:

  • 请问您为什么要这样做。 .htaccess 不适合你?
  • 用例是什么,为什么不采用$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] 而不仅仅是uri?见PHP: $_SERVER - Manual
  • 最近我有了一个带有子域的新项目。控制器,必须加载子域的主页,仅包含在 REQUEST_URI 中!!!我不知道如何......但它适用于 DEV 和 PRODUCTION 服务器。无法让它在我的本地机器上运行。

标签: php apache subdomain request-uri


【解决方案1】:

不可能。 REQUEST_URI url 的主机名组件之后出现的:

http://example.com/foo/bar/baz
           ^--- HTTP_HOST
                    ^---- REQUEST_URI

您当然可以在 URI 组件中包含您的子域名,但这是您必须做的事情,而 Apache+PHP 则不会。他们不会为了适合你而重写 URL 的基本定义。

【讨论】:

  • 看起来有可能......但仅限于 nginx:stackoverflow.com/questions/18869930/… 但我没有尝试。我的本地机器上没有 nginx。
  • 这不是 nginx/apache 的问题,而是 php_mod 与 php-fpm 的问题。应该改进该项目,而不是破解您自己的服务器以适应一个糟糕的实施项目。
  • 是的,我认为你是对的。但是我对此无能为力,因为必须为此重写的项目的很大一部分是 subrepo 并在其他项目上使用。不过还是谢谢你的解释。
【解决方案2】:

$_SERVER['HTTP_HOST'] 返回带有当前subdomaindomain

$parsedUrl = parse_url($_SERVER['HTTP_HOST']);

$host = explode('.', $parsedUrl['host']);

$subdomain = $host[0];
echo $subdomain;

【讨论】:

    猜你喜欢
    • 2016-12-28
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2013-04-16
    • 1970-01-01
    • 2012-08-04
    相关资源
    最近更新 更多