拡張子付きのURLをLaravelで実装する

laravel

こんにちは、せぃゆーです。

今日は拡張子付きのURLをLaravelで実装しようと思います。

スポンサーリンク

なぜ拡張子付きURLの実装?

古いシステムの改修業務でURLに.phpや.htmlがついているシステムがあり、URLを変更しないで新システムに乗り換える方法がなかなかわからなかったので、備忘録です。

↓こんなやつ

  • example.com/company.php
  • example.com/company.html

実装方法

実装方法は意外と簡単です。私はこれに気付くまでに時間がかかりました。

今回はコントローラーを作成せずweb.phpだけで完結させたいと思います。

方法は簡単でルーティングの正規表現制約を付けるだけです。

例えばcompany.phpの場合では「/文字列」でアクセスした場合で文字列部分をwhereメソッドを使い定義するだけです。

Route::get('{php_file}', function () {
    echo '<p>localhost/company.phpでアクセスしています。</p>';
})->where('php_file', 'company.php');

Route::get('{html_file}', function () {
    echo '<p>localhost/company.htmlでアクセスしています。</p>';
})->where('html_file', 'company.html');

Route::get('{php_file}', function () {
    echo '<p>localhost/about.phpでアクセスしています。</p>';
})->where('php_file', 'about.php');

Route::get('{html_file}', function () {
    echo '<p>localhost/about.htmlでアクセスしています。</p>';
})->where('html_file', 'about.html');

web.phpを上記のようにするだけで「/company.php」「/company.html」にアクセスすることが可能です。

まとめ

実装方法自体はとても簡単ですが、この発想がなくて

Route::get('company.php', function () {
    echo '<p>localhost/about.htmlでアクセスしています。</p>';
})

上のように書いていて全然アクセスできない状態でハマってしまいました。

もちろん上のような書き方でもwebサーバの設定ではアクセスすることが可能ですので、自分の環境に合わせた設定方法もあると思います。

今回のリポジトリ

GitHub - seiyu-nico/laravel_file_extension: Laravelで拡張子付きのURLに対応する
Laravelで拡張子付きのURLに対応する. Contribute to seiyu-nico/laravel_file_extension development by creating an account on GitHub.

おすすめ書籍

コメント