CakePHP3のルーティングが効かないときに確認すること

ルーティングとはURLとコントローラーのアクションを紐づけることです。この紐づけの設定はconfigフォルダにあるroute.phpでおこないます。

ただしroute.phpを修正してURLを叩いても、意図するコントローラーのアクションが実行されない場合があります。

このときはソースコードの不備だけではなく環境が原因だったりします。

ベースパス以外がすべて動作しない場合

初期設定ではベースパス”/”に対してPagesControllerが呼び出されます。

$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);

このベースパス以外の設定が全く有効にならない場合は、サーバーの設定を見直します。

Apacheを使用している場合はhttpd.confの設定を確認します。例えばAllowOverrideがAllになっていないと正しくルーティングができません。

<Directory />
Options FollowSymLinks
AllowOverride All
# Order deny,allow
# Deny from all
</Directory>

その他の設定であったり、nginxを使っている場合には公式ドキュメントを参照しましょう。

https://book.cakephp.org/3/ja/installation.html

一部のルーティングのみ有効にならない場合

この場合はキャッシュが原因かもしれません。

CakePHP3では以下の操作でキャッシュを削除することができます。

$ cd <ルートフォルダ>
$ bin/cake cache clear_all

Related Posts