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

$host = $_SERVER["HTTP_HOST"];
残りは必要ありません。

私はあなたが何か間違ったことをしている可能性が非常に高いことに気付かなければなりません。代わりに、少なくとも3つの異なるスクリプトを作成するか、各ドメインを独自のスクリプトを使用して異なるディレクトリにマップします。コードにそのような混乱を持たせるのは悪い習慣です。

于 2012-11-20T17:26:54.260 に答える
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/ホストに複数のホスト名を指定できます(ローカルホスト上にあると想定)。

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 に答える