皆さん、こんにちは。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 にアクセスできるようになります。ありがとうございます。
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 フレームワークでは、クラス名をすべて小文字にすることが推奨されているようです