0

私はCodeigniterの最近のユーザーであり、ページを管理するためのシンプルなバックエンドCMSを開発しています。

URLに基​​づく(この例では「index.php」を非表示にしています):mysite.com/pagename

データベースに「pagename」の値があるかどうかをシステムに検出させたいのですが、ある場合は、システムをカスタムコントローラー(例:Pagemaker)に再ルーティングする必要があり、pagenameというレコードがない場合は、それは普通のことです(つまり、pagenameというコントローラーを見つけます)

現在私は持っています:

$route['(:any)'] = "pagemaker/create/$1"; 

これにより、すべてのリクエストがカスタム関数に転送されます。

ただし、この構造を変更して、ページがデータベースに存在しない場合は、従来のcodeigniterリクエストプロセスに従うようにします。

誰かがこれを完了する方法について何かアドバイスを提供できますか?または、一般的なcodeigniterでのカスタムCMSのルーティングに関するアドバイスはありますか?

4

2 に答える 2

1

最適な解決策は、CI 2.0 にアップグレードすることです。CI 2.0 は十分に安定しており、多くの便利な機能を提供します。

あなたの場合、次のルートを設定します。

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

ルーターがどこに行くかわからない場合は、ページメーカーコントローラーに移動します。次に、最初の uri セグメントが存在するかどうかを確認し、存在しない場合は、安っぽいデフォルト ページの代わりにカスタム 404 ページを作成します。

そして、この「ああ、でもまだリリースされていない」というがらくたを聞きたくありません。私はCI 2.0をほぼ1年間使用しています。;-)

于 2011-01-14T13:48:54.770 に答える
0

次の 2 つの可能性が考えられます。

1) カスタム関数を編集して、ページが db 疑似コードにない場合にクライアントをリダイレクトできるようにします。

if($dbresult == null){
    redirect("http://yoursite.com/"+$this->uri->segment(3));
}

2) CI のルーター クラスを編集して、最初にページがデータベースにあるかどうかを確認し、そうでない場合は続行します。Router.php で db 接続が必要なため、これはやや面倒かもしれません。

于 2011-01-14T13:07:04.787 に答える