CakePHP2.2 Router::connect 正規表現


お世話になっています。

多言語サイトを作成していて
全ページURLの最後にjp/、en/とパラメータをつけて判断しようと思うのですがうまくいきません。

パラメータがない場合はエラーもしくはjp/にリダイレクトをかけたいです。

routes.php
Router::connect('/', array('controller' => 'Top'));
Router::connect('/news/:lang', array('controller' => 'News', array('lang' => '[a-z]+')));
Router::connect('/:lang', array('controller' => 'Index', array('lang' => '[a-z]+')));

TopControllerは
http://ドメインだったらhttp://ドメイン/jp/にリダイレクトするだけ(IndexController)
IndexControllerは
パラメータでviewの切り替え(日本語、英語)

URL http://news/とパラメータを渡さなかった場合
IndexControllerが呼ばれてしまいます。
なのでエラーもしくはhttp://news/jp/にリダイレクトをかけようと思うのですが
いい案などがあればお聞かせください。

宜しくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/12/04 20:26:37
  • 終了:2012/12/11 20:30:04
id:oracle11011

修正しました。
URL http://ドメイン/news/とパラメータを渡さなかった場合
IndexControllerが呼ばれてしまいます。

URL http://ドメイン/news/とパラメータを渡さなかった場合
IndexControllerが呼ばれてしまうのでここをどうにかしたいです。

エラーでもリダイレクトでもいいので宜しくお願いします。

回答(0件)

回答はまだありません

  • id:oracle11011
    routes.php
    Router::connect('/', array('controller' => 'Top'));
    Router::connect('/news/:lang', array('controller' => 'News', array('lang' => '[a-z]+')));
    Router::connect('/:lang', array('controller' => 'Index', array('lang' => '[a-z]+')));

    変更
    routes.php
    Router::connect('/', array('controller' => 'Top'));
    Router::connect('/news/:lang', array('controller' => 'News', array('lang' => 'jp$|en$|ch$')));
    Router::connect('/:lang', array('controller' => 'Index', array('lang' => 'jp$|en$|ch$')));

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません