1

试图为 3 个不同的域创建一个 index.php 文件......所以我需要为不同的域显示不同的内容。但希望它也适用于子文件夹的“子文件夹”,我的意思是 site1.com/some_content

这是我的代码,但它不能按我的意愿工作。

<?php
    $host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    if($host == 'site1.com')  {
        echo "A LOT OF HTML JAVASCRIPT AND CSS";
    }
    if($host == 'site2.com')  {
        echo "Same here but different content";
    }
    if($host == 'site3.com')  {
        echo "Cats and flowers";
    }
?>

有任何想法吗?谢谢!

4

2 回答 2

0

如果您使用的是 Apache,您可以在.htaccess文件中定义如下内容:

SetEnvIfNoCase Host "^development.example.com$" APPLICATION_ENV=development
SetEnvIfNoCase Host "^staging.example.com$"     APPLICATION_ENV=staging
SetEnvIfNoCase Host "^example.com$"             APPLICATION_ENV=production

然后,在您的 index.php 文件(或您在每个页面加载中包含的任何内容)中添加以下内容:

defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

之后,您可以读取APPLICATION_ENV代码中任何位置的值,以确定您目前所处的环境,如下所示:

switch (APPLICATION_ENV) {
   case 'development':
       // do stuff
       break;

   case 'staging':
       // do stuff
       break;

   case 'production':
   default:
       // do stuff
       break;
}

您可以将多个主机名指向 /etc/hosts(或 C:/Windows/System32/drivers/etc/hosts)文件中的同一个 IP/主机,如下所示(假设它位于 localhost 上):

127.0.0.1 development.example.com
127.0.0.1 staging.example.com
127.0.0.1 example.com

我知道拥有一个全局常量不是主意,但它比依赖 HTTP_HOST 更好,因为它可以很容易地改变。

于 2012-11-20T17:31:43.880 回答
0

$host = $_SERVER["HTTP_HOST"];
你不需要剩下的。

我将不得不注意到你很可能做错了什么。至少创建 3 个不同的脚本,或者更确切地说,使用它自己的脚本将每个域映射到不同的目录。在代码中出现这样的混乱是一种不好的做法。

于 2012-11-20T17:26:54.260 回答