1

スタックオーバーフロー コミュニティの皆様、こんにちは。

CodeIgniter に少し問題があります。アプリ フォルダーで 2 つのアプリケーションを使用しています。1 つ目はフロントエンド、2 つ目はバックエンドです。

私のルート ディレクトリには 2 つの .php ファイルがあります。フロントエンド ディレクトリにつながる index.php と、バックエンド ディレクトリにつながる backend.php。

きれいな URL を取得するために mod の書き換えを使用しているため、これには問題があります。URL 構造は次のとおりです: www.domain.com/controller/action

これが、フロントエンド アプリケーションのコントローラーのアクションです。

htacces を使用して、ドメインとコントローラーの間の /index.php/ を取り除きます。バックエンド アプリケーションにアクセスするには、URL を www.domain.com/admin/controller/action のようにします

したがって、次の書き換えルールがあります。

RewriteCond %{REQUEST_URI} ^admin.*
RewriteRule ^admin/(.*)$ /backend.php?/$1 [L]

問題: CodeIgniter は /backend/ が最初の URI セグメントであると想定し、誤ってそれをコントローラーとして扱いたいと考えています。

Server Request URI を使用しないようにするために CodeIgniter のコアを編集する必要がありますか、それとも別のトリックがありますか?

前もって感謝します、トーマス

4

2 に答える 2

1

これは実際には機能しません。設定が必要な定数については、config/config.phpやconfig/settings.phpなどを確認してください...実際には、各アプリケーションを個別の「アプリケーション」ディレクトリで実行する必要があります。また、「個別の」アプリケーションである必要があるかどうかを自問する価値もあります...

基本的に、あなたがまだできる間、この道を進むのをやめなさい、それは失恋と恐ろしいコードの連なりにつながるでしょう。

于 2011-06-03T15:58:31.770 に答える
0

コントローラ内に「admin」という名前のフォルダを2つ持つ代わりに、「admin」という名前のフォルダをコントローラー内に持つこともできます。modelsこのviewsフォルダlibrariesをこのプロジェクトから取り出して、他のプロジェクトに移動できます。

これにより、標準を使用してURLからrewriteを削除し、コントローラー内の管理フォルダーを指すことができます。index.phpdomain.com/admin

'admin.php'という名前のルートコントローラーフォルダー内にコントローラーがないことを確認する必要があります。そうしないと、問題が発生します。

詳細については、 「コントローラーをCIドキュメント内のサブフォルダーに整理する」を参照してください。

また、すぐに使用できるMVCフレームワークが、CMSの作成に常に最適であるとは限らないことにも注意してください。通常、MVCフレームワークはroutes、特定のをかなり静的に指すWebアプリケーションをすばやく作成するために最適に使用されますcontrollerscontrollers一方、CMSは、Webサイトを完全に制御する傾向があります。これにより、データベース駆動型のルートが作成され、ルーティングシステムを大幅に変更しない限り、通常のルートが不要になることがよくあります。

于 2011-06-03T17:15:57.933 に答える