1

最初の URI セグメントに基づいてルーティングをセットアップしようとしています。

私にはルールがあります:

$route['(:any)'] = pages/view_page/$1;

ルートを条件付きにして、URI セグメント 1 の名前のコントローラーが呼び出された場合に、通常どおりコントローラーに移動するようにしたいと考えています。コントローラーが存在しない場合は、pages/view_page 関数に移動します。

URI セグメント 1 をチェックし、それを使用して一致するファイルが存在するかどうかを確認する if ステートメントで $route ルールをラップしようとしましたが、うまくいかないようです。

多くのルート設定を書かなくてもこれを行う方法について何か提案はありますか?

4

1 に答える 1

1

ルーティングのオーバーライドは単純な正規表現ベースの変換であるため、「そうでなければ機能するかどうか」という種類のロジックを直接埋め込むことはできません。これにより、基本的に 2 つのオプションが残ります。

  1. (:any)「キャッチオール」ルールの前に明示的に機能させたいルートをリストします
  2. 代わりに予約ルートを使用して、$route['404_override']他の方法でコントローラーが見つからない場合にどのコントローラーをロードする必要があるかを示します。ただし、入ってくる URL を確認し、show_404()適切な 404 http ステータス コードを呼び出して、不足している静的アセットなどを出力します。
于 2012-09-18T18:03:59.953 に答える