エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Laravel】URLが『/hoge』のように、.phpが要らない理由【291日目】

普通のページなら

phpの普通のページだと、URLは

https://domain.jp/hoge/huga.php

のように、phpをつける必要がありました。

では、なぜLaravelはそれが必要ないのでしょう。

必ずindex.phpを開いてるから

これはURLがなにであろうと、ドキュメントルートのindex.phpを開いているからです。

https://domain.jp/hoge/huga

と書いていても、開くのは、ドキュメントルートのindex.phpです。

そして、そのindex.phpが、route.phpを読み込んで、目的のページを表示させています。

では、どうやって必ずindex.phpを読み込ませているのか

.htaccessに秘密が

    RewriteEngine On

    ## Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

URLの最後がスラッシュなら、残りを第一引数に渡したり、
強制的にindex.phpを呼び出したり。

あーここでいろいろしてたんですね。

nginxの場合

ちなみに、nginx+php-fpmとかで構築してるときには、nginxの方でも設定されてることもあります。

詳しくはこちらへ

willow710kut.hatenablog.com