4

そのため、Codeigniter 2.1 Internationalization i18n Libraryを使用しており、コントローラーの名前を削除する短いURLで言語パラメーターを使用するようにルートを調整する必要があります。

$route['default_controller'] = "home";

#$route['^(en|es|ro)/(.+)$'] = "$2";
#$route['^(en|es|ro)$'] = $route['default_controller'];

$route['results$']      = "fetch/results";
$route['video/(:any)']  = "fetch/video/$1";
$route['tag/(:any)']    = "fetch/tag/$1";

$route['404_override'] = '';

だから私はhttp://localhost/app/en/results?query=t-shirts代わりにこの作品を作る必要がありますhttp://localhost/app/en/fetch/results?query=t-shirts

どうすればそれを達成できますか?

編集:

$route['^(en|es|ro)/results$'] = "fetch/results";
$route['^(en|es|ro)/video/(:any)'] = "fetch/video/$1";
$route['^(en|es|ro)/video/(.+)$'] = $route['^(en|es|ro)/(.+)$'] = "$2";"fetch/video/$2";

上記のいずれも機能しません。

私がhttp://localhost/app/en/fetch/video/asfasf完全に機能する場合

これはしませんhttp://localhost/app/en/video/asfasf

私が得るエラーは404です:

404 Page Not Found

The page you requested was not found.

問題が見つかりました

だから、何らかの理由でこのセットを持っている:$route['^(en|es|ro)/(.+)$'] = "$2";私がやろうとしていたことが問題を引き起こす前に。

4

2 に答える 2

2

この種のコントローラーの目的は無効になりますが、2番目のセグメントとして「結果」が含まれるものはすべて「フェッチ」コントローラーを使用する必要があることがわかっている場合は、次のようにすることができます。

$route['^(en|es|ro)/results$'] = "fetch/results";

編集:

それはあなたの(:any)ラインが正しいものの前にキャッチしているからです。また、「。」(ドット)文字はスラッシュにも一致しますが、これはおそらくあなたが望むものではありません。

$route['^(en|es|ro)/results$']       = "fetch/results";
$route['^(en|es|ro)/video/([^/]+)$'] = "fetch/video/$2";
$route['^(en|es|ro)/video/(:any)']   = "fetch/video/$1";
于 2012-01-04T06:29:54.163 に答える
2

そのライブラリを使用していて、カスタムルートを設定したい場合は、それらを機能させるために、次の順序で実行する必要があります。

  1. カスタムルート
  2. ライブラリによって追加されたルート

例:

$route['default_controller'] = "home";

//First
$route['^(en|es|ro)/video/(.+)$'] = "fetch/video/$2";
$route['^(en|es|ro)/results$']     = "fetch/results$2";
//Second
$route['^(en|es|ro)/(.+)$']        = "$2";
$route['^(en|es|ro)$'] = $route['default_controller'];


$route['404_override']  = '';
于 2012-02-24T11:48:27.117 に答える