質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

1回答

1979閲覧

Laravelで静的ファイルに認証をかけたい

Mrame

総合スコア6

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/12/16 04:04

前提・実現したいこと

book ├ assets │ ├ js │ │ ├ main.js │ ├ css │ │ └ style.css │ └ img │   └ logo.png └ index.html

上記のような静的ファイルがあります。
Laravelプロジェクトにこのbookフォルダを配置し、ログインユーザーのみにindex.htmlを表示させたいです。

該当のソースコード

web

1Route::group(['middreware' => 'auth'], function() { 2 Route::get('/book', function() { 3 return \File::get(storage_path('app/book/index.html')); 4 }) 5})

試したこと

  • storage/app配下にbookフォルダを配置し、上記ルートにて認証を通す
  • php artisan storage:linkは実行済み

エラー内容

  • index.html内に相対パスで記載されているCSSやJSが404になる(index.htmlは読み込めている)

認証を通して静的ファイルを表示するにはどのようにするのが良いのでしょうか?
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Laravel 5.8
PHP 7.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

index.html以外のファイルも全部Laravelを通して表示すればいい。

それは面倒&そこまで厳密に制限しなくてもいいならassetsだけpublicに置くほうが簡単。
cssやjsは/public/assets/に置く。
htmlだけ/storage/app/book/に置く。
index.htmlでは/assets/からのpathで指定。相対パスは使わない。
/assets/js/main.js
/assets/css/style.css

(storage:link使うなら/storage/app/public/assets/に置いてもいいけど認証なしで見えることは同じなのでどっちでもいい)

ブラウザからは/bookでindex.htmlの中身が表示されてることしか分からない。
storageとか全く関係ないのでブラウザから見えるように作るだけ。

投稿2020/12/16 05:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mrame

2020/12/16 06:56

ご回答ありがとうございます。 ご指摘いただいたようにassetsを/public/assetsに、index.htmlを/storage/app/bookに置き、index.htmlのパスを変更することで実現できました。ありがとうございます。 パスを変更しない場合はindex.htmlにてCSSやJSを読み込めないようです(パスは./assets/***のように記載されている) 上記のフォルダが大量にあるのですが、パスを変更しないで対応することは可能でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問