0

異なる言語用に複数のディレクトリを展開する必要があるシナリオがあります。開発は当初、これらの言語の1つに集中しており、サイト全体のほんの一部が小さなCIアプリです。

アプリ全体を他のいくつかの言語にコピーしたり、にリダイレクトしたりすることは避けようとしてい.htaccesます。後者は正常に機能していますが、実際のURLとは異なるURLからアクセスすると、CIは404エラーを返します。

私の推測では、追加のルートURLを構成する一意のプロパティを持つ特定の構成ファイルが存在する必要がありますが、どこから始めればよいかわかりません(Googleは同様のシナリオを考え出しませんでした)。

ファイル構造:

public_html/
    lang1/
        app/    
            (the actual CI app)
        other static stuff...
    lang2/
        app/
            .htaccess (redirecting to /lang1/app/)
        other static stuff...
    lang3/
        ...

追加情報:

$config['base_url']設定されていhttp://.../lang1/app/ます。

.htaccess:_

RewriteEngine on
RewriteRule ^(.*)$ /lang1/app/$1 [L]
4

2 に答える 2

2

私は自分でこれを達成することができました。将来この質問を見つける可能性がある人のために、これらは別のディレクトリからアプリケーションにアクセスするための手順です。上記の質問で紹介したシナリオを考慮すると、次の例は、ディレクトリにゴーストバージョンのアプリをデプロイする場合に機能します。lang2

1.- CIインストールのルート(から)からディレクトリにindex.phpファイルのみをコピー します。lang1/app/index.phplang2/app/

2.-次の行を編集します。

$system_path = '../../lang1/app/system';


$application_folder = '../../lang1/app/application';
//Even if the documentation suggests the necessity of a _full path_, 
//this works perfectly well for 2.1.0

3.-上記のサブディレクトリに明示的に設定したい構成を追加します。これらは$this->configに設定され、ベースアプリケーションの構成ファイルに設定された値を置き換えます。

$assign_to_config['lang_version'] = 'lang2';

4.-適切なを設定する必要がありますbase_url。この場合、lang_version含めた構成を再利用できます。このようにして、作成する必要のある次の言語のこの行を忘れることができます。

$assign_to_config['base_url'] = 
    'http://www.example.com/' . $assign_to_config['lang_version'] . '/app/';

5.-内部にファイルを作成して、HTMLによってアクセスされる静的アセット(js、css、画像)が、次のように元のアプリディレクトリ内の実際のアセットフォルダーから取得されるようにします。.htaccesslang2/applang1/app/assets

RewriteEngine on
RewriteRule ^assets/(.*)$ /lang1/app/assets/$1 [L]

6.-これに通常のルールを追加.htaccessしてURLをわかりやすくしますが、今回はすべてのトラフィックをアプリのゴーストコピーに転送します。

RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteRule ^(.*)$ /lang2/app/index.php/$1 [L]

7.-成功を祝うために、常に地元の法律を尊重しながら、ビールやその他の飲み物を手に入れましょう。利益。コントローラはconfig('lang_version')、適切な言語でコンテンツをユーザーに提示するために値を読み取る必要があります。そのために付属の言語ヘルパー、またはその他の任意のソリューションを使用できます。

于 2012-06-25T14:52:41.080 に答える
0

なぜあなたはこれをしますか?i18nというものがあります。

http://codeigniter.com/wiki/CodeIgniter_2.1_internationalization_i18n/

これを使ってみませんか?アプリのフォルダをコピーするのは少し面倒に思えませんでしたか?理由のために言語ヘルパーがあります。

これがお役に立てば幸いです。

于 2012-07-01T18:18:34.893 に答える