http://www.example.com/aboutのような URL を持つサイトのデフォルトのページ コントローラーを作成しようとしています。したがって、「about」コントローラがない場合は、データベースでその URL 文字列を含むページを探します。
「ページ」コントローラに 404_override を設定し、_remap() 関数を使用して、ホームページ (ページ コントローラの index() メソッド) をロードするか、ページをロードするかを決定しています。
ただし、現時点では、パス (存在しない http://www.example.com/product/widget) 内のメソッドで別のコントローラー (この場合は製品) を使用すると、ページコントローラーの index() メソッドを提供しました。
問題は、要求されたページが _remap() のホームページであるかどうかを確認する方法にあると考えたため、リマップの先頭にエコーを追加して、問題があるかどうかを確認しました。_remap() が呼び出されていないようです。代わりに、404_override を処理しようとすると、CI は index メソッドを表示するだけです。
これをより効果的に達成する方法はありますか?
public function _remap($method)
{
echo 'Method '.$method;
if($this->uri->segment(1) == null)
{
// $this->index();
} else {
$this->view();
};
}