PHP
laravel

Laravel ルーティング理解のための基礎

最近ちょっとteratailとかで回答してるけど基本ができてない人多いね?
フレームワークはLv1の人でもなんでも作れるようになる魔法ではないので
Lv20くらいまで上げてからじゃないと無理だよ…。

QUERY STRING

まずは素のPHPで。
遥か昔、ルーティングっぽいことをするにはこんな感じだったはず。
http://example.com/index.php?p=1
http://example.com/index.php?p=2

switch($_GET['p']) {
    case '1':
        echo '1';
        break;
    case '2':
        echo '2';
        break;
    default:
        echo 'index';
}

PATH_INFO

もうちょっと短くしたいので
http://example.com/index.php/1
http://example.com/index.php/2

$pathinfo = $_SERVER['PATH_INFO'];
// '/1'

$page = explode('/', $pathinfo);

switch($page[1]) {
...

index.phpを消したい

http://example.com/1
http://example.com/2

ウェブサーバーの設定が必要になる。
Apacheなら.htaccessで

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

https://readouble.com/laravel/5.4/ja/installation.html#web-server-configuration

  • ファイルが存在すればそのまま表示。
  • 存在しなければすべてindex.phpに渡す。

WordPressでもLaravelでも他のフレームワークでも基本的には同じ考え方。

index.phpに渡った後はPATH_INFOの場合と同じ。
Laravelならさらに渡されたPATHを処理してどのコントローラーを実行するか決める…のがルーティング。
(厳密にはどう実装されてるかは調べてないけど)