DEVELOPERS BLOGデベロッパーズブログ
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
- 血液型
- 秘密
- 出没
- 美味しいもののあるところ
- 特色
- タヒチ大好き。ちょいメタボ。
- 2020/12/15
- CakePHP3 のリダイレクトがうまく行かない例
- 2020/11/12
- Apache Bench
- 2020/10/05
- PhpSpreadsheet でExcel ファイルを読み込む (CakePHP3)
2020/12/15
2020/11/12
2020/10/05
2020/09/11
2020/08/03