2012-01-22 18 views
1

私のサイトはほとんど起動していますが、元のコードには、例えばimg src="/design/pic1.png"などがあります。実際のサーバーでは、必要なディレクトリはwebなので、新しいパスはimg src="web/design/pic1.png"であるはずですが、すべてのパスを書き換えたくありません。 別のオプションはありますか?別のディレクトリにリダイレクト

+4

は、サーバーを持っている場合でも、新しいバージョンにすべてのそれらのパスを書き換え、それは一時的でなければなりません修正する必要があります。あなたが移動して変更したくないという理由だけで存在しないパスを参照するべきではありません。適切なことを行い、正規表現で検索と置換を行い、パスを正しいパスに置き換えるだけの良いエディタを使用します。 (また、あなたのウェブサイトのディレクトリ内に "web"フォルダがあると奇妙に思えます) –

答えて

1

設定に応じて、環境に依存する基本パスを決める定数を設定する方法があります。例えば

、その後、あなたはこのようなもので終わるかもしれない、あなたは$WEB_ROOT . "/design/"内のすべての画像を入れて満足しているが、本番環境でそれは$WEB_ROOT . "/web/design/"だ開発環境にいるとします

<?php 

    // initialise stuff for development 
    if(ENVIRONMENT == ENV_DEV) { 

     define("BASE_PATH", "/"); 

    // initialise stuff for production 
    } elseif(ENVIRONMENT == ENV_PROD) { 

     define("BASE_PATH", "/web"); 

    } 

?> 

その後、あなたのHTMLに、あなたがそうのように、このBASE_PATH定数を使用することができます:あなたはこの例ではENV_DEVENV_PRODであるかを決める方法

<img src="<?=BASE_PATH;?>/design/pic1.png" /> 

、完全にuがありますあなたにp。

ドメインに基づいて検出する方法があります($_SERVER['HTTP_HOST']has some caveatsを使用)。

もう1つの方法は、ウェブ設定でこれを初期化することです。 Apache2を使用しているとします。SetEnvディレクティブを使用します。あなたのhttpd.conf

あなたが使用してPHPにアクセスすることができます
SetEnv MY_ENVIRONMENT DEV 

<?php 

    $_SERVER['MY_ENVIRONMENT']; 

    // or... 

    getenv("MY_ENVIRONMENT"); 

?> 
+0

thats great、そして.cssファイルのファイルはどうですか? –

+1

それは難しいことです。 CSSファイル*に関連する画像をCSSディレクトリに配置する傾向があります。ですから、 '$ WEB_ROOT/css/style.css'があれば、' $ WEB_ROOT/css/images/'を作成してCSSの画像を相対パスで参照します。 '/ something/something/css/images/foo.png'ではなく、' images/foo.png'となります。また、あなたのCSSディレクトリがWebルートから常に1レベル離れていることを知っているなら、 '../ images/foo.png'を実行することができます。 – gpmcadam

関連する問題