3

CodeIgniter で自動ルーティングをオフにして、そのリクエストのルートが存在する場合にのみリクエストを処理することは可能ですか? ありがとう。

4

5 に答える 5

10

Dale のソリューションは次の点に注意してください。

$route['(:any)'] = "some/default/controller/$1";

次のような 1 セグメントの URL でのみ機能します。

example.com/foo

ただし、次の場合は対象外です:

example.com/foo/bar

これは、CI ワイルドカードの代わりに正規表現を使用することで回避できます。そして、存在しないクラスにルーティングすると、実際に show_404() がドロップされます。

$route['(.*)'] = "none";
于 2015-05-22T21:56:56.117 に答える
3

知る限り、CI の自動ルーティングをオフにすることはできませんが、回避策があります。

// you specific routes
$route['admin/(:any)'] = "admin/$1";
$route['search/(:any)'] = "search/$1";
// the catch all route
$route['(:any)'] = "some/default/controller/$1";

CI のルーティングを実際にオフにするわけではありませんが、一致しないすべての uri をデフォルトのコントローラーにルーティングします。

または、組み込みの 404 エラーがスローされると思われる存在しないコントローラーにルーティングすることもできます

于 2012-12-11T10:07:16.000 に答える
2

まあ、別の解決策は を拡張することRouterです。

  1. /application/core/MY_Router にクラス名 MY_Route を作成し、 として宣言しclass MY_Router extends CI_Routerます。
  2. メソッドをオーバーライドできます_set_routing()

    この関数は、URI リクエストと、ルーティング構成ファイルで設定された「ルート」に基づいて、何を提供するかを決定します。

もっと複雑にする必要がありますが、少なくとも別の解決策に導くことができます。

于 2012-12-11T14:44:29.893 に答える
0

Codeigniter 4 ソリューション:
app/config/Routes.php の 24 行目で値を true から false に設定

$routes->setAutoRoute(false);
于 2021-09-10T17:44:50.750 に答える
-1

いいえ、私の知る限り、CodeIgniter の自動ルーティング規則を無効にすることはできませんが、.htaccess ファイルにエントリを追加して、デフォルト ルートを作成したルートにリダイレクトすることはできます。

于 2012-12-11T10:05:24.790 に答える