1个文件中不同域的不同内容

时间:2012-11-20 17:22:33

标签: php

尝试为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";
    }
?>

任何想法?谢谢!

2 个答案:

答案 0 :(得分:0)

$host = $_SERVER["HTTP_HOST"];
你不需要休息。

我必须注意到你很可能做错了什么。 至少创建3个不同的脚本,或者使用它自己的脚本将每个域映射到不同的目录。在代码中乱七八糟是一种不好的做法。

答案 1 :(得分: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上):< / p>

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

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