0

最初のセグメントのみを有効にしたい場合のcodeignitersルーティングに関する質問があります。グーグルするとき、カントは良い答えを見つけるようです。

したがって、一般的なページの基本的なルートがあります。

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

Pagesはクラスであり、viewは変数としてのページの名前とともにメソッドです(ciマニュアルの例とほとんど同じです)。

これは、次の場所に移動すると正常に機能します。

www.mysite.com/mypage/

しかし、私が次に行くとき:

www.mysite.com/mypage/randomstring/

これは、本質的に重複しているmypageもロードします。

最初のセグメントにのみ適用するルートを指示する方法はありますか?さらに存在する場合は404を実行しますか?

悪化した場合は、メソッドにチェックを追加して、2番目のセグメントが存在するかどうかを確認します。存在する場合は、show_404ですが、純粋にルートで実行できるかどうかを確認します。

読んでくれてありがとう、そしてそれが理にかなっていることを願っています。

4

2 に答える 2

1

これを試して:

$route['(:any)/(:any)'] = "none_existent_controller";
$route['(:any)'] = "common/pages/view/$1";
于 2012-07-19T12:23:02.283 に答える
1

代わりに正規表現を使用できますか?

$route['([^/]+)'] = 'common/pages/view/$1';

これにより、ドメインの後のURLに/が含まれなくなり、含まれている場合は、デフォルトの404ページが呼び出されます。

私はこれをテストしていませんが、動作するはずです;)

于 2012-07-19T13:59:55.793 に答える