LoginSignup
7
3

More than 5 years have passed since last update.

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

Posted at

最近ちょっと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を処理してどのコントローラーを実行するか決める…のがルーティング。
(厳密にはどう実装されてるかは調べてないけど)

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3