1

現在、リソースをドメイン間で分割しています。私はこれを処理する方法についていくつかの異なる方法を読みました。私が読んだ正しい処理方法は、相対パスではなく絶対パスを使用することです。これが本当なら、ローカル開発をライブでプッシュするときに、これをどのように処理しますか?ドメインはローカルからライブに一致しません。

base_urlは、私が読んだ限り、単一のドメインのみを許可します。アセットパスヘルパーを作成して自動ロードする必要がありますか?または、ここで欠けているものはありますか?

http://www.example.com would operate normally.
http://images.example.com/assets would point to my asset folder that exists in the root.
4

3 に答える 3

0

アセットURLのconfig/constants.phpで定数を定義し、それを使用できます。

define('ASSETS_URL', 'http://images.example.com/assets/');

そしてもちろん、あなたはそのようにそれのために行くでしょう:

<img src="'.ASSETS_URL.'image1.png" />
于 2012-11-21T20:20:31.920 に答える
0

さらに調査した結果、これが私の問題を解決した方法です。このソリューションにたどり着くのを手伝ってくれた Codeigniter フォーラムに感謝します。サイトが開発のどの段階にあるかを確認するスイッチを作成し、それに応じて base_url および asset_url 構成を設定します。

switch(ENVIRONMENT)  //set in index.php
{
  case 'development':
    $config['base_url'] = 'http://localhost/';
    $config['asset_url'] = 'http://localhost/assets/';
    break;
  case 'production':
    $config['base_url'] = 'http://yoursite.com/';
    $config['asset_url'] = 'http://assets.yoursite.com/';
    break;
}

次に、url_helper を拡張して、asset_url を取得する関数を作成します。

if ( ! function_exists('asset_url'))
{
    function asset_url($uri = '')
    {
        $CI =& get_instance();
        return $CI->config->item('asset_url') . ltrim($path, '/');
    }
}
于 2012-11-28T22:02:10.540 に答える
0

ええ、行われたリクエストに応じて、サーバー構成が特定の場所を指す部分がありません。これは、リクエストが codeigniter に近づく前のことです。そのため、サーバー ソフトウェアのマニュアルを参照して、何が起きているかを確認してください。

Apache 仮想ホストの例は次のようになります。

#httpd.conf:
<VirtualHost *:80>
        ServerName        example.com
        DocumentRoot      /var/www/http
        ErrorLog          /var/log/httpd/error_log
        TransferLog       /var/log/httpd/access_log
</VirtualHost>


<VirtualHost *:80>
        ServerName        images.example.com
        DocumentRoot      /var/www/http/assets
        ErrorLog          /var/log/httpd/error_log
        TransferLog       /var/log/httpd/access_log
</VirtualHost>

この例では、へのリクエストは、radical と呼ばれる gifhttp://images.example.com/radical.gifを探します。/var/www/assets/

于 2012-11-21T18:35:37.217 に答える