CodeIgniter で自動ルーティングをオフにして、そのリクエストのルートが存在する場合にのみリクエストを処理することは可能ですか? ありがとう。
5 に答える
Dale のソリューションは次の点に注意してください。
$route['(:any)'] = "some/default/controller/$1";
次のような 1 セグメントの URL でのみ機能します。
example.com/foo
ただし、次の場合は対象外です:
example.com/foo/bar
これは、CI ワイルドカードの代わりに正規表現を使用することで回避できます。そして、存在しないクラスにルーティングすると、実際に show_404() がドロップされます。
$route['(.*)'] = "none";
知る限り、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 エラーがスローされると思われる存在しないコントローラーにルーティングすることもできます
まあ、別の解決策は を拡張することRouter
です。
- /application/core/MY_Router にクラス名 MY_Route を作成し、 として宣言し
class MY_Router extends CI_Router
ます。 メソッドをオーバーライドできます
_set_routing()
:この関数は、URI リクエストと、ルーティング構成ファイルで設定された「ルート」に基づいて、何を提供するかを決定します。
もっと複雑にする必要がありますが、少なくとも別の解決策に導くことができます。
Codeigniter 4 ソリューション:
app/config/Routes.php の 24 行目で値を true から false に設定
$routes->setAutoRoute(false);
いいえ、私の知る限り、CodeIgniter の自動ルーティング規則を無効にすることはできませんが、.htaccess ファイルにエントリを追加して、デフォルト ルートを作成したルートにリダイレクトすることはできます。