コードイグナイターを使用した 404 問題

WBOY
リリース: 2016-06-23 14:10:22
オリジナル
1251 人が閲覧しました

皆さん、こんにちは。codeigniter を初めて使用したときに次の問題が発生しました:

1. Windows XP では正常に動作しますが、Linux で実行すると 404 エラーが発生します。
2. ホームページにアクセスすると(http://IPアドレス/プロジェクト名/またはhttp://IPアドレス/プロジェクト名/index.php/index)表示されますが、ログインをクリックすると(http:/) /ip アドレス/プロジェクト名) /index/login)、インデックス コントローラーにパブリック ログイン メソッドがあり、404 エラーが発生します。
3. Linux 環境は Red Hat Enterprise Edition 5、Apache は 2.0.64、php は 5.4.3 です。Apache は書き換えて設定されており、パス情報が追加されています

config.php の uri_request をさまざまに変更してみました。可能な値(query_string、autoなど)では現象は残ります。

codeigniter のログを見ると、login.php がブラウザに送信されているようですが、なぜ 404 のままなのでしょうか?

Windows では同じプログラムに問題はありません。どこに問題があるのか​​お聞きしてもよろしいでしょうか。ありがとう!
添付された codeigniter ログ:
DEBUG - 2012-06-01 09:42:54 --> Config クラスが初期化されました
DEBUG - 2012-06-01 09:42:54 --> フック クラスが初期化されました
DEBUG - 2012- 06-01 09:42:54 --> Utf8 クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> UTF-8 サポートが有効になりました
デバッグ--> URI クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> ルーター クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> 出力クラスが初期化されました
- 2012-06-01 09:42:54 --> セキュリティ クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> 入力クラスが初期化されました
デバッグ-->
デバッグ - 2012-06-01 09:42:54 --> ローダー クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> デバッグ - 2012-06 -01 09: 42:54 --> ヘルパーが読み込まれました: form_helper
デバッグ - 2012-06-01 09:42:54 --> フォーム検証クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 - -> セッション クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> ヘルパーがロードされました: string_helper
デバッグ - 2012-06-01 09:42:54 --> 暗号化クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> データベース ドライバー クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> セッション ルーチンが正常に実行されました
デバッグ:54 -- > DX 認証が初期化されました
DEBUG - 2012-06-01 09:42:54 --> 2 回目の試行は無視されました
> 設定ファイルがロードされました: application/config/dx_auth.php
デバッグ - 2012-06-01 09:42:54 --> 言語ファイルがロードされました: language/japanese/dx_auth_lang.php
デバッグ - 2012-06-01 09 :42:54 --> モデル クラスが初期化されました
デバッグ - 2012-06-01 09:42:54 --> モデル クラスが初期化されました
デバッグ初期化されました
DEBUG - 2012-06-01 09:42:54 --> ユーティリティ クラスはすでにロードされました。
DEBUG - 2012-06-01 09:42:54 --> ヘルパーがロードされました: url_helper
DEBUG - 2012-06-01 09:42:54 --> 設定ファイルがロードされました: application/config/access_limit.php
エラー - 2012-06-01 09:42:54 -->未定義の変数: message /usr/local/apache2/htdocs/tab/application/views/login.php 44
DEBUG - 2012-06-01 09:42:54 --> ロードされたファイル: application/views/login.php
DEBUG - 2012-06-01 09:42:54 --> 最終出力はブラウザに送信されました
DEBUG - 2012-06-01 09:42:54 --> 合計実行時間: 0.0547


返信ディスカッション (解決策)

まずはこれが機能するか試してみてください

http://ip アドレス/プロジェクト名/index.php/index/login
http://ip アドレス/プロジェクト名/index.php/login

返信上司:


http://ipアドレス/プロジェクト名/index.php/index/login アクセスできます

http://ipアドレス/プロジェクト名/index.php/login アクセスできません

教えてください変更方法 そうすることでのみ http://ip アドレス/プロジェクト名/index/login にアクセスできるようになります。ありがとうございます。

config.phpのindex_pageをindex.phpに設定すると、Windowsではhttp://ipアドレス/プロジェクト名/index.php/index/loginが自動的に表示されますが、index_pageは設定されていませんが、http://ipアドレスが表示されます。 /プロジェクト名/index/loginにアクセスできます。

http://ip アドレス/プロジェクト名/index.php/index/login にアクセスできる場合

http://ip アドレス/プロジェクト名/index/login にアクセスできない場合

つまり、書き換えルールが間違っていることを意味しますを確認してください

2つの違いは、後者はファイル名index.phpを非表示にする必要があることです
ウィンドウは次のように記述する必要があります
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^( .*)$index.php/$1 [QSA,PT,L]

Linux でも同じはずです。確認してください


最初に application/errors/ の下のログを確認することをお勧めします。以下のファイル名には大文字が含まれていますが、Linux では認識されません。CI フレームワークでは、クラス名をすべて小文字にすることが推奨されているようです

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート