0

routes.php で新しいルートを定義しましたが、問題があります。

$route['default_controller'] = "index";
$route['404_override'] = '';
$route['(:any)'] = "oyna/oyun/$1";

/2012.htm を oyna/oyun/2012.htm にリダイレクトしたいのですが、新しい問題が発生します。以下のように定義しないと、他のコントローラーに到達できません。

$route['default_controller'] = "index";
$route['404_override'] = '';
$route['admin/(:any)/(:any)'] = 'admin/$1/$2';
$route['admin/(:any)'] = 'admin/$1';
$route['kategori/(:any)'] = "oyna/kategori/$1";
$route['(:any)'] = "oyna/oyun/$1";

上記のようにroutes.phpでコントローラーを定義しないと、それに到達できません。解決するために何をする必要がありますか?

4

3 に答える 3

2

よくわかりませんが、置き換え$route['(:any)'] = "oyna/oyun/$1";てみてください$route['(:num).htm'] = "oyna/oyun/$1.htm";

またはより良い:$route['(\d+).htm'] = "oyna/oyun/$1.htm";

于 2012-09-09T15:29:43.583 に答える
0

私のすべてのリンクには、末尾に .htm があります。そして、これが解決策です:

$route['(:any).htm'] = "oyna/oyun/$1";

私のコントローラーには最後に .htm がないためです。

于 2012-09-09T18:43:19.117 に答える
0

CodeIgniter のルートは少しおかしいですが、ルートがどのように処理されるかを理解すれば、完全に理にかなっています。

ルートは正規表現マッチングを使用するため、非常に一般的なものだけを使用して他のすべてが機能することを期待することはできません。これは、URL によって暗示されたコントローラー/メソッドにルーティングする前にルートを確認するためです。

http://domain.tld/2njkf4rANDなどの URL を一致させたい場合http://domain.tld/pages/aboutは、最初のケースに一致する非常に一般的なルールの「例外」を処理するために、より具体的なルールを作成する必要があります。

$route['(:any)']ルートとしてのみ使用すると、すべてのリクエストがそれに一致するため、他のルートを定義しない限り機能しないことは間違いありません。そのルートはあなたの絶対的な最後のルートでなければなりません。ルートを処理する方法のために、それはお尻の痛みですが、必要です。

于 2012-09-09T17:30:31.497 に答える