SIMPLE

SSGで構築したサイトをVercel等で公開すると404になる

ローカルでは問題なかったサイトがホスティングサービス等を利用して公開すると404になる問題の解決方法

事象

トップページのhttps://hostは問題なく表示される。

ログインを行ってhttps://host/top等に遷移した初回も問題なく表示される。

ただ、同画面にてリロードを行ったり、検索機能を使うと404エラーになってしまう。

原因

npm run buildを行った後のデプロイ元のoutフォルダの構成を見てみる。

topフォルダが存在せずtop.htmlが作成されている。

開発時のフォルダ構成は以下

見てわかるようにフォルダ構成が異なってしまっている。

初回表示時はルーティングの機能が働いて、top.htmlを表示してくれるが、リロードや直リンクをすると/top/index.htmlを見てしまい404エラーになってしまう。

解決方法

next.config.jsに以下オプションを付与すると、開発時と同じフォルダ構成で出力され問題が解消する。

trailingSlash: true

以下はオプションをつけた状態でビルドしたフォルダ構成。

top/index.htmlが作成されていることがわかる。

牧野

RPCブログ管理者