【PWA】アイコンが404(Not found)で読み込めない

はじめに

とあるサービスをPWA化しようとした時、なぜかアイコンが読み込めずService Workersが起動しない問題にぶち当たったのでメモ。

本題

原因

アイコン画像を「icons」フォルダに入れていたのが原因でした。

Apacheサーバで運用されている場合、公開ディレクトリ直下に「icons」というフォルダを作って読み込もうとすると、Apacheのデフォルトページ用に用意されている「icons」フォルダを参照してしまう。

Apacheの設定ファイル内でそういうエイリアス設定がされているようです。

解決方法

PWA用に用意した「icons」というフォルダの名前を変更する。例えば「pwaicons」など。

同時に、manifest.jsonファイルで設定しているアイコン読み込み先のパスも修正。

余談

PWA関係なく普通のサイト制作時に「icons」というフォルダを用意して画像などを読み込もうとした場合もNot foundになると思います。

例えば、当サイトのURL「https://brainlog.jp」の後ろに「icons」を付けて、「https://brainlog.jp/icons/」にアクセスしてみると、Apacheデフォルトページ用の画像リストが表示されてしまいます。(これはセキュリティ的にあまりよろしくないようですが…)

まとめ

Apacheサーバでそういう設定がされている事を今回はじめて知りました(恥)

VPSなどで運用している場合は、Apacheの設定を見直してエイリアス設定を解除した方がいいようですが、今回はXSERVERでの運用だったので、フォルダ名の変更で対処しました。ちなみにXSERVERはNginxを採用していますが、内部でApacheが動いています。