Laravel7系以降でサブディレクトリ配下の公開に対応する

Laravel6系までは対応していたサブディレクトリ配下での公開がサポートされなくなったようです。公式のissueで記述がありました。

https://github.com/laravel/framework/issues/42539

調べると一応抜け道はあるらしく、.htaccessやapacheの設定などが公開されていましたが、もっと簡単にお手軽に設定できないかと調整した結果をまとめておきます。

なお、確認したLaravelのバージョンは 8.83.26、PHPは 7.4系です

一応は表示されるように設定できますが、公式サポートされていない方法なので何か問題が発生する場合もあるため自己責任でお願いします。

route:clear

.htaccessやapacheの設定は変えずに、route:clearの実行で対応できます。

php artisan optimize
php artisan route:clear

通常はoptimizeでそれぞれのキャッシュ作成がまとめて実行されますが、routeのキャッシュだけclearすれば表示可能です。

以上がミソで、あとは設定ファイルをサブディレクトリ対応させます。以下の設定はLaravel7系以前からサブディレクトリ運用で必要だった項目? かと思います。

APP_URL=https://<ドメイン>/<サブディレクトリ>
// 静的ファイルの読み込みを絶対URLに変更、jsなどもasset()で囲めば対応可
    <link rel="stylesheet" href="{{ asset(mix('css/app.css')) }}">
mix.js('resources/js/app.js', 'public/js')
    .postCss('resources/css/app.css', 'public/css', [
    // mix() で囲んでいるので.version()の記述も追加、サブディレクトリ自体には関係ないかも
    ]).version();

あとはLaravelのpublicフォルダを配信したいサブディレクトリにシムリンクを貼れば公開できます。

お疲れ様でした。

ホーム » フルスクラッチ開発 » Laravel7系以降でサブディレクトリ配下の公開に対応する

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA