DEVELOPERS BLOGデベロッパーズブログ

  1. HOME > 
  2. 加藤 正人 > 
  3. タイトル

CakePHP3 のリダイレクトがうまく行かない例

2020/12/15

CakePHP3 のリダイレクトがうまく行かない例

 

CakePHP3 のルーティング機能にはリダイレクト機能も提供されている。通常は例えば

$routes->redirect('/members', '/members/login', ['status' => 302]);

のようにすることでリダイレクトが動作するのだが、先日うまく行かないケースを見つけた。

会員ログインページ /members/login へのアクセスを /members でもできるようにしたかったのだが、なぜか /webroot/members にリダイレクトされ、 WebrootController.php が見つからない、というエラーになった。

調査してみたところ、/public_html/webroot 配下に members フォルダが存在するとこのエラーが発生するようだ。

つまり、/members という URL をルーティング設定で処理しようとする場合に /public_html/webroot/members が存在するとエラーになるという事の要だ。

この現象が発生した場合に、暫定的ではあるが取れる解決方法は2つ。

方法1: 短縮 URL と同名のフォルダを /public_html/webroot 配下に作成しない

方法2: /members ⇒ /members/login のルーティングに加え、/webroot/members ⇒ /members/login のルーティングも追加する

取り敢えずこのいずれかの方法で回避はできた。

この記事は加藤 正人さんが書いています!

加藤 正人

氏名
加藤 正人
役職
多分SE
血液型
秘密
出没
美味しいもののあるところ
特色
タヒチ大好き。ちょいメタボ。