NginxでCodeIgniterを使用しています。 私は、CodeIgniter 2.2.6から3.1.4にアップグレードしました。すべての変更ログとアップグレードの指示に従いました。すべてが正常に動作しますが、デフォルトのコントローラ、つまりhttp://francescoruvolo.it(またはhttp://francescoruvolo.it/index.php)でも404ページが表示されますが、他のすべてのルーティングルールが機能し、他のコントローラをロードできます。CodeIgniterが '/'のデフォルトコントローラーをロードしない
は、ここに私のroutes.php
です:
$route['(it|en)/contact/check_form'] = "Email/validate_form/$1";
$route['(it|en)/contact'] = "Email/show_form/$1";
$route['(it|en)/(:any)'] = "Pages/show/$1/$2";
$route['(it|en)'] = "Pages/show/$1";
$route['default_controller'] = "Pages/show/";
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
私もすべてのルートをコメントしようとしましたが、まだデフォルト1は無視されます。それでも、私がhttp://francescoruvolo.it/Pages/showまたはhttp://francescoruvolo.it/enに行くと、コントローラーはうまくロードされて動作します。多くの人が同様の問題を抱えていました。なぜなら、クラスの大文字の名前を強制することについての部分を見逃していたからです。しかし、私のコントローラーの名前は既に修正されているので、そうではありません。
これらはconfig.php
のパラメータです:
$config['base_url'] = 'http://francescoruvolo.it/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
そして、それは正しく、私は明示的にコントローラをロードするときに、それを指定する必要はありません実際には、index.php
にすべての要求を転送しているようにnginxのが見えます。
location/{
try_files $uri $uri/ /index.php;
}
私は何を得ることはありませんが、私は実際に404ページの二つの異なる種類を取得することができるよということです:とにかく、これらの行は、ホストのための私のnginxの設定の一部です。たとえば、私がhttp://francescoruvolo.it/nonexistent.phpに行くと、Nginxは私に404ページを正しく提供します。同時に、パスを指定しなかった場合、または明示的にindex.php
を指定した場合は、「整形済み」という404が表示されます。つまり、CodeIgniterのindex.phpは実際に実行されましたが、コントローラをロードできませんでした。
私には何が欠けていますか?他に何が確認できますか?
https://stackoverflow.com/questions/12757211/codeigniters-default-controller-doesnt-load –
@RobertRochaありがとう、しかしそれは私の問題を解決しません。 CodeIgniterがNginxからではなく、CodeIgniterから404ページを得ている間に、CodeIgniterが正しく動作していることを意味しています。 – Zagorax
routes.phpの小文字で試してください '$ route ['default_controller'] =" pages/show ";' – user4419336