ルーティングとは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