2011-12-20 6 views
1

私はdrupal 7サイトを持っています。私はライブサイトとステージングモジュールアップデート用の開発サイトを持っています。ライブサイトには関連するドメイン名がありますが、私の開発サイトはアクセスのためにip address:portを使用しています。このようなもの:www.customersite.comライブ、10.0.1.10:10091 for dev。複数の書き換え条件の処理(1つはライブサーバー用、もう1つは開発サーバー用)

Drupal 7の.htaccessファイルでは、コード1のコメントアウトを解除して、www以外のリクエストに "www"を付加することができます。しかし、私はIPサイト上で動作しているときにこの動作を望んでいません。このために正しい書き換え条件を作成するにはどうすればよいですか?

RewriteCond %{HTTP_HOST} !^www\. [NC] 
#RewriteCond %{HTTP_HOST} ^10.0.1.10\. [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

答えて

2

ライブ、テスト、ステージ、開発など何かが発生する可能性がある場合は別の.htaccessを使用してください。対応するシステムでは、正しいものだけをコピーしてください。

cp .htaccess-live .htaccess 

これはまた、より簡単なものになります。

+0

ありがとう@kingcrunch。私は今このようにコメントを使用します。私は何かを望んでいたので、私はライブサイトに更新をプッシュするときに変更を行うことを覚えておく必要はありませんでした。 – Screenack

+0

展開プロセス中に実行されるスクリプトを作成します。 – KingCrunch

0

@キングクランチ。ここでは全く違った方法がありますが、何も触れることなくソースフォルダ全体をコピー/ペーストしなければならないだけで、うまくいきます。

devとprodの2種類の仮想ホストを使用します。 2つの異なるファイル。 PROD用

まず1:devに関する

<VirtualHost *> 

    ServerAdmin [email protected] 
    DocumentRoot "/web/htdocs/mydomain/prod" 

    ServerName mydomain.com 
    ServerAlias www.mydomain.com 

</VirtualHost> 

第二1:

<VirtualHost *> 

    ServerAdmin [email protected] 
    DocumentRoot "/web/htdocs/mydomain/dev" 

    ServerName dev.mydomain.com 

</VirtualHost> 

そして、私のhostsファイルに、それらはすべて同じIPに行きます。データベースにアクセスするために私のPHPコードで 、私のような何かを実行します。

if (isset($_SERVER['HTTP_HOST'])) { 
    /* usual HTTP page */ 
    define('HOST', $_SERVER['HTTP_HOST']); 
} 
else { 
    /* command line */ 
    define('HOST', 'command_line'); 
} 
/* define db access depending on host: */ 
if (HOST == 'command_line') { 
    /* command line */ 
    define('SQL_CNX_NOM_BD', 'mydomain_dev'); 
} 
elseif ((mb_ereg('dev\.',HOST) !== false)) { 
    define('SQL_CNX_NOM_BD', 'mydomain_dev'); 
} 
elseif ((mb_ereg('mydomain',HOST) !== false)) { 
    define('SQL_CNX_NOM_BD', 'mydomain_prod'); 
} 
else { 
    throw new Exception("unable to determine db ". 
    "with this host: ".HOST); 
} 

をそれから私はちょうど何も触れることなく私の全体のソースフォルダをコピー/ペーストする必要があり、それはかなりうまく動作します。

+0

言及したいと思いますが、私は単純さを強調しました。しかし、あなたのコードのほとんどはアプリケーションの設定ですが、PHPではなく '.htaccess'の異なるホストを区別する方法が問題でした。 Sidenotes: '* ereg *()'は廃止され、 'mb _ *()'は役に立たず、正規表現は高価です – KingCrunch

+0

あなたのためにはダン+1!あなたは正しいです、私はあなたの答えを+1します –

+0

ありがとうOlivier。ただし、ライブサイトは、有用な方法でvhostsファイルを公開しない共有サイトです。 Drushはsettings.phpファイルを除外します。そのため、除外された方法で管理されます。 – Screenack

関連する問題