1

そのため、過去にいくつかのサイトでコード イグナイターを使用して同様のことを何回行ったかわかりません。ただし、新しいコピーを取得して、新しいサイトで再構築を開始するだけで、理解できないねじれた小さな問題に既に遭遇しています。この方程式に何が欠けているのかわかりません..

だから、これは現在私のルートです:

$route['default_controller'] = "home";
$route['404_override'] = 'home/unknown';

$route['post/(:any)/(:any)'] = 'post/$1/$2';
//$route['post/(:any)'] = 'post/$1';
//$route['post'] = 'post';

$route['host-hotel'] = 'host_hotel';
$route['floor-plan'] = 'floor_plan';
$route['wine-facts'] = 'wine_facts';
$route['exhibitor-application'] = 'exhibitor_application';

$route['photo-gallery'] = 'photo_gallery';
$route['video-gallery'] = 'video_gallery';

今、問題は特にこの男にあります。

$route['post/(:any)/(:any)'] = 'post/$1/$2';

投稿の代わりにセグメントの記事に名前を付けることさえ試みました.CIの一種の保護された名前かもしれないと考えています。この行の上に気付いた場合は、URL のバリエーションを追加して、最初のセグメントのみ、またはその後の 1 つまたは 2 つのセグメントを処理できるようにしました。この例ではコメントアウトされていますが、うまくいきませんでした。

私が行った場合domain.com/post、動作は期待どおりです。その後にあるものはすべて、問題の始まりです。数字、文字、またはその組み合わせを何かしたとしたら..

つまりdomain.com/post/s2hjdomain.com/post/s2hj/avdページが 404 動作のように動作し始めます。ページが見つかりません。これは、私が過去にこのようなルートを行ったことがあると言ったように、私には意味がありません。そして、私にはこのルートが適切に見えますか?それで、誰が何を探すべきかアイデア/提案を持っていますか?

4

2 に答える 2

2

:anyスラッシュを含む文字通りすべての文字に一致します。これはCodeIgniter3.0で変更されますが、当面は([^ /])を使用して単一のセグメントをキャッチできます。

于 2012-11-17T22:32:11.150 に答える
1

これを試す別の方法は、古き良き正規表現を使用することです。

$route['post/([^/]+)/([^/]+)'] = 'post/$1/$2';

また、合計 2 つの uri セグメントを処理できるようにする必要がある場合は、次のことを検討してください。

$route['post/([^/]+)(?:/([^/]+))'] = 'post/$1/$2';

REGEXP は次のように説明しました。

()内部の文字列を単純にキャプチャして処理します。また、反対側$1$2などを提供します。

(?:)上記と同じですが、キャプチャしません$1

[]内部のものの許可された組み合わせです。[0-9]数字のみを検索します。

[^]逆の論理です。指定された記号以外のすべて。

[^/]は 以外のすべて/なので、望ましい結果が得られます。

于 2012-11-18T11:48:07.630 に答える