2つのアプリケーション(パブリックアプリと管理アプリ)にCodeIgniterを使用しています。ドキュメント構造の重要な要素は次のとおりです。
/admin
/admin/.htaccess
/admin/index.html
/application
/application/admin
/application/public
/system
.htaccess
index.php
/admin/.htaccessファイルは次のようになります。
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
/admin/index.phpには次の変更があります。
$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)
また、/ application/admin/config/routes.phpには次のものが含まれています。
$route['default_controller'] = "welcome";
$route['admin'] = 'welcome';
ようこそが私のデフォルトのコントローラーです。
ドメイン/管理者を呼び出すと、404ページが見つかりませんというエラーが表示されます。 Domain/admin/welcomeを呼び出すと、すべて正常に動作します。デバッグログに次のエラーメッセージが表示されます。
DEBUG - 2010-09-20 16:27:34 --> Config Class Initialized
DEBUG - 2010-09-20 16:27:34 --> Hooks Class Initialized
DEBUG - 2010-09-20 16:27:34 --> URI Class Initialized
ERROR - 2010-09-20 16:27:34 --> 404 Page Not Found --> admin
奇妙なことに、このセットアップはローカルMAMPインストール(localdomain/admin /を使用)で完全に機能しますが、「ライブ」サーバーで公開およびテストすると、404エラーが発生します。
何か案は?何が間違っていますか?ありがとうC.
問題の原因は、サーバーがFastCGIを使用してPHPを実行していたことです。
Config.phpを次のように変更した後
$config['uri_protocol'] = "REQUEST_URI";
すべてが働いた。
私の状況に出会った他の人のために、この答えをここに残します。
私のcodeigniterアプリはlocalhost/WAMPで正常に機能していましたが、AWS EC2インスタンスにプッシュするときに404 not foundエラーをルーティングして生成できませんでした。私の問題は、 [〜#〜] here [〜#〜]htaccessがlocalhostで動作するという回答から解決されました。 EC2インスタンスでは機能しません
(私の管理ページへのルート){domain}/adminが404を生成していました
/etc/httpd/conf/httpd.conf
ファイルを変更する必要があります。
-「DocumentRoot "/ var/www/html"」の各インスタンス(2箇所)の後、「AllowOverride None」を「AllowOverride All」に変更する必要がありました。
AWSダッシュボードからEC2インスタンスを再起動しました。
{domain}/adminがアクセス可能になり、意図したとおりに動作するようになりました。
これが他の誰かが私を助けてくれたことを願っています!
2つのうちの1つまたは両方の組み合わせを試すことができます。
これが誰かの助けになることを願っています
例えば:
コントローラー名はYourControllerです
URLは次のとおりである必要があります。
http://example.com/index.php/YourController/method
ではない:
サーバー側で小文字でコントローラー名を指定する必要があります
$this->class = strtolower(__CLASS__);
新しい環境に移行した後も同じ問題が発生し、サーバーがmod_rewriteを実行しなかったというだけでした
クイック Sudo a2enmod rewrite
その後Sudo systemctl restart Apache2
そして問題が解決しました...
質問に対するコメントでそれを指摘してくれた@fanisに感謝します。
あなたのフォルダ/ファイル構造は私には少し奇妙に思えます。あなたがこれをどのようにレイアウトしたかはわかりません。
こんにちは2つのアプリケーション(パブリックアプリと管理アプリ)にCodeIgniterを使用しています。
これは、2つの別個のCIインストールがあるように思えます。これが事実なら、私はそれに対してお勧めします。管理コントローラーですべての管理項目を処理しないのはなぜですか? 2つの別個のCIインストールが必要な場合は、それらが明確に別個のエンティティであり、2つが互いに競合しないことを確認してください。この行:
$system_folder = "../system";
$application_folder = "../application/admin"; (this line exists of course twice)
そして、あなたがこれが存在すると言った場所(/admin/index.php ...または/ admin/application/configを意味していましたか?)に頭を悩ませています。トップレベルにadmin/application/adminとシステムフォルダーがありますか?
私の場合、localhost
で使用していましたが、.htaccess
のRewriteBase
を変更するのを忘れていました。