2012-11-20 25 views
1

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

这是我的代码,但它不工作,因为我想。

<?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

只留下'$ host = $ _SERVER ['SERVER_NAME']'。您不需要'REQUEST_URI' – Alex

+0

使用'echo $ _SERVER ['SERVER_NAME']'和'echo $ _SERVER ['REQUEST_URI']'来进行基本的调试。这很明显,为什么你的代码不起作用。 – Jocelyn

+0

删除$ _SERVER ['REQUEST_URI']部分 – vlcekmi3

回答

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; 
} 

您可以指向多个主机名到同一个IP /主机在/ etc/hosts文件(或C:/在Windows/System32下/驱动器/ etc/hosts文件)文件中像这样(假设它是在localhost):

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

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

+0

哇!谢谢!是的,你的权利,这是德夫好多了!谢谢andris :) –

0

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

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

+0

谢谢!我知道,但在这种情况下,这是唯一可行的方法...... –

相关问题