1

CodeIgniterは、デフォルトで1つのアプリケーションのみをサポートします。サブドメインに基づいた複数のアプリケーションが必要です。したがって、サブドメインはアプリケーションフォルダ名です。存在する場合は、それ以外の場合はデフォルトで実行する必要があります。ここに私の要件とロジックがあります...

要件:

http://dynamic.com              applications/application (default)
http://appone.dynamic.com       applicatons/appone
http://apptwo.dynamic.com       applicatons/apptwo
....                            ....
http://appx.dynamic.com         applicatons/appx

訪問者が上記のようにURLの例を入力すると、.htaccessまたはindex.phpが使用するアプリケーションフォルダを自動的に選択する必要があります。

index.phpのcodeIgniterデフォルトコードを変更し、正常に機能するこのコードを記述します。

// multiple applications path //
$path = 'applications/';
// default folder //
$folder = 'application';

preg_match('/^(?<subdomain>\w+)\.(dynamic\.com)$/im', $_SERVER['HTTP_HOST'], $matches);
if (isset($matches['subdomain']) && is_dir($path . $matches['subdomain'])) {
    $folder = strtolower($matches['subdomain']);
}
$application_folder = $path . $folder;

私の質問-.htaccessで同じロジックを書くことは可能ですか?index.phpに私のようなコードを書くとパフォーマンスの問題はありますか?私を提案するか、htaccessロジックについて私を助けてください。画像も添付。ありがとうございました!!

ここに画像の説明を入力してください

4

1 に答える 1

1

あなたのやり方は正しいです。CodeIgniter が index.php ファイルで使用するアプリケーション フォルダーを設定しています。

パフォーマンスに関する唯一の懸念は、preg_match 関数と is_dir 関数です。私の意見では、文字列はかなり小さいため、パフォーマンス上のリスクはそれほど大きくありません。ただし、 is_dir 関数を回避できるように、よりハードコードされるように switch() ステートメントを記述します。この方法を実行すると、preg_match 関数の代わりに非常に安価な if ステートメントの使用に切り替えることもできます。

これを .htaccess ファイルに書き込む理由はありません。CodeIgniter を使用すると、これを実行できます。.htaccess を使用してこれを使用する場合は、インストール用に別のフォルダーを用意してシンボリック リンクを開始する必要があります。

于 2012-07-05T14:22:21.987 に答える