2012-03-03 10 views
0

私のCodeIgniterのconfig/routes.phpのファイルに何があるかを見てみてください:だからcodeigniterルーティングルール - 何が間違っているのですか?

$route['default_controller'] = "primary"; 
$route['404_override'] = ''; 

$route['(:any)']    = 'primary'; 
$route['login']    = 'login'; 
$route['admin']    = "admin"; 
$route['admin/(:any)'] = 'admin/$1'; 

を、私はかなりそれが世話をされます私の主要 "コントローラに向けべき任意のページリクエストをしたいですそこにindex()関数があります。いくつかの例外があります。ログインはログイン、管理者はadminになります。それはすべて正常に動作しています。問題は最後のルールにあります。これはうまくいかないようです。 'admin/whatever'はただプライマリコントローラにルーティングされます。どうして?

I通常どおり、実際にルートしたい任意の管理要求、そう何/管理者は/ 管理/何/になり、何でも/何/管理/に行く管理/何/何/ 。多くのセグメントが存在する可能性があり、個々のルールをリストするには余りにも多くあります(最初の$ route ['(:any)'] = 'primary';ルール)の例外として必要です。これを行う方法はありますか?

私はcodeigniterをかなり使い慣れているので、答えが明らかに明白な場合は謝ります。私は最後の数時間を答えのために掘り起こし、何も見つけることができませんでした。

答えて

2

でどんな機能を持っている場合、どのような管理/に行くべきものは何でも/最後のルールや管理者を削除し、何か他にどんな/管理を書き換えする場合を除き。ルールは優先順位に従って注文する必要があります。私はログインと管理ルートの前にキャッチオールルート(:any)を持っていたので、ルートは常にプライマリコントローラに行き、最初に一致したので他のルートには到達しませんでした。

ルートもセグメント数で並べ替える必要があります。したがって、 'admin /(:any)'は 'admin'の前に来る必要があります。 'admin /(:any)'ルールでは、(:any)は、後続のセグメントの任意の数を参照することができます。

私が今持っている:

$route['admin/(:any)']   = 'admin/$1'; 
$route['login/(:any)']   = 'login/$1'; 
$route['login']      = 'login'; 
$route['admin']      = "admin"; 
$route['(:any)']     = 'primary'; 

をし、それが正常に動作します。

0

あなたがそうでなければ、私は愚かされていた管理コントローラ

関連する問題