最近ちょっと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]
- ファイルが存在すればそのまま表示。
- 存在しなければすべてindex.phpに渡す。
WordPressでもLaravelでも他のフレームワークでも基本的には同じ考え方。
index.phpに渡った後はPATH_INFOの場合と同じ。
Laravelならさらに渡されたPATHを処理してどのコントローラーを実行するか決める…のがルーティング。
(厳密にはどう実装されてるかは調べてないけど)