本文へ移動
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
  • About
  • Price
  • Work
  • Blog
  • Contact
  1. ホーム
  2. Blog
  3. 【Laravel】サブディレクトリに設置したアプリでapp.js、app.cssがnet::ERR_ABORTED 404 Not Found

公開日: 2021.03.29

【Laravel】サブディレクトリに設置したアプリでapp.js、app.cssがnet::ERR_ABORTED 404 Not Found

【Laravel】サブディレクトリに設置したアプリでapp.js、app.cssがnet::ERR_ABORTED 404 Not Found

目次

  • 原因
  • 対策

Laravelに標準でついているコンパイルツールLaravel Mixを使っている場合で、以下のようにLaravel Mixを使ってアセットを書き出すように書いている場合に起こるようです。

Blade内で

<!-- Styles -->
<link rel="stylesheet" href="{{ mix('css/app.css') }}">

<!-- Scripts -->
<script src="{{ mix('js/app.js') }}" defer></script>

原因

Laravel Mixでは、mix()で囲われたパスを自動的にルートパス以下の相対パスで書き換えるようです。なのでサブディレクトリにアプリを設置した場合は、サブディレクトリが抜けてしまいます。

対策

検索してみると、webpack.mix.jsに以下の一行を追記すると良いとあります。

mix.setResourceRoot('/subdir/');

さっそくやってみたのですが、どうにも上手くいかずだいぶ長い時間ネットをさまよいましたが、結局この方法ではダメでした。(setResourceRootがなぜかまったく反応せず・・・)

英語圏の記事で1つ参考になるものがあり、それによると以下のようにすることで対処できるようです。

Blade内で

<!-- Styles -->
<link rel="stylesheet" href="{{ url(mix('css/app.css')) }}">

<!-- Scripts -->
<script src="{{ url(mix('js/app.js')) }}" defer></script>

mix()をurl()で囲うというもの。実際にやってみるとなるほどうまくいった。mix()は相対パスを吐き出すのに対してurl()はアプリURLを絶対パスで吐き出す。なのでとりあえずこれで良さそう。

関連記事

【Laravel8】サブディレクトリに設置したアプリでlivewire.jsがnet::ERR_ABORTED 404 Not FoundLaravel8からログイン機能まわりにJetstreamが導入され、7以前のLaravelと比べてだいぶ中身も変わっていました。そんな中…

タグ

  • 404
  • Laravel Mix
  • サブディレクトリ

関連記事

2020.09.08

【Laravel】ルーティングに問題ないのにNot Found(404)

【Laravel】ルーティングに問題ないのにNot Found(404)

2021.09.27

【Laravel】キャッシュ関連をクリアしてもクラスファイルの変更が反映されない時

【Laravel】キャッシュ関連をクリアしてもクラスファイルの変更が反映されない時

2021.06.21

【Laravel】ユーザーの新規登録を制限する

【Laravel】ユーザーの新規登録を制限する
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
YAS プロフィール画像

長野県長野市在住
WEBエンジニア YAS

LINKS

  • X
  • Instagram
  • GitHub
Design
  • スタンダード
  • 和モダン
  • エンジニア
  • 信州ナチュラル
プライバシーポリシー

@ Webstudio YAS