ReactやNext.jsアプリをデプロイする方法

ReactやNext.jsアプリのデプロイ

ReactやNext.jsアプリをデプロイする方法(SPAのリライト設定付き) | We.Inc

アプリの種類とホストを選ぶと、ビルドコマンド、出力フォルダー、そしてリロード時の404を防ぐリライト用ファイルがわかります。Vercel、Netlify、Cloudflare、GitHub Pagesに対応しています。

Reactアプリをデプロイするには、本番ビルドを実行し、出力フォルダーをホストに渡します。Viteならdist、Next.jsの静的エクスポートならoutです。シングルページアプリでは、未知のパスをindex.htmlに送るリライトも必要で、これがないとディープリンクをリロードしたときに404になります。完全なNext.jsアプリには、Node.jsを実行できるホストが必要です。

アプリの種類別のビルド出力

Reactのデプロイの失敗は、ほとんどが3つの原因に行き着きます。出力フォルダーの間違い、クライアントサイドのルート用リライトの欠落、そしてサーバーが必要なNext.jsの機能を静的ホストに送ってしまうことです。下でアプリの種類とホストを選ぶと、その組み合わせに必要な設定とファイルが正確にわかります。いずれも各ホスト自身のドキュメントに基づいています。

よくある質問

ページをリロードするとReactアプリが404になるのはなぜですか?

ルーターはブラウザー内にありますが、リロードするとサーバーに/about/index.htmlのような存在しないファイルを要求することになります。未知のパスに対してindex.htmlを返すリライトがあれば、再びルーターが処理を引き継げます。そのルールの書き方はホストごとに異なります。

Cloudflare Pagesでリライトは必要ですか?

ビルドの最上位に404.htmlがなければ不要です。Cloudflareのドキュメントによると、その場合Pagesはプロジェクトをシングルページアプリとして扱い、実在するファイルではないすべてのパスにルートのindexを返します。

Next.jsアプリをGitHub Pagesにデプロイできますか?

output: 'export'による静的エクスポートとしてのみ可能です。GitHub Pagesはファイルを配信するだけでNext.jsのサーバーを実行できないため、サーバーアクション、Cookie、リライト、オンデマンドレンダリングなどの機能は使えません。

リダイレクトとリライトの違いは何ですか?

リダイレクトはブラウザーを新しいURLに移動させるので、アドレスバーが変わります。リライトは要求されたURLを保ったまま別のファイルを返すもので、シングルページアプリに必要なのはこちらです。Netlifyでは、リライトをステータス200で表します。

環境変数はどこに設定しますか?

コミットした.envファイルではなく、ホストのプロジェクト設定で指定します。ブラウザーに配信される変数は公開されることを忘れずに、非公開にすべきキーはサーバーかサーバーレス関数に置きましょう。

ステップ1:クリーンな本番ビルド

ステップ2:リロードしても壊れないルーティング

ステップ3:ドメインと確認

ホスト別のSPAリライトルール

キャッチオールのルールを書く場所(各ホストのドキュメントより、2026年10月時点)

netlify.tomlでのNetlifyのリライト

1行の_redirectsファイルと同じルールです。ステータス200により、訪問者が要求したアドレスが保たれます。

ViteサイトのためのGitHub Actionsワークフロー

Viteのデプロイガイドにあるワークフロー(各アクションをコミットに固定しています)を元にしています。mainへのpushのたびにビルドし、distを公開します。「Settings」の「Pages」で、ソースとしてGitHub Actionsを有効にしてください。

リポジトリをインポートすると、VercelがViteを検出します。ディープリンクでアプリが読み込まれるよう、このファイルをプロジェクトのルートに追加してください。

ビルドコマンドはnpm run build、公開ディレクトリはdistです。Viteがdistにコピーするよう、この行をpublic/_redirectsとして保存してください。

リポジトリを接続し、Viteのプリセットを選びます。distの最上位に404.htmlがない限り、Pagesが未知のパスにルートのindexを返すので、ルールは不要です。

baseをリポジトリ名に設定し、GitHub Actionsでビルドしてdistを公開します。GitHub Pagesには独自の404.htmlはありますがリライトのルールはないため、ビルド後にindex.htmlを404.htmlにコピーするのが一般的な回避策です。その場合、ディープリンクはステータス404で読み込まれます。

VercelはNext.jsを直接ビルドするので、ここでは静的エクスポートは任意です。どこでも同じファイルを使いたい場合にだけ残しましょう。

公開ディレクトリをoutに設定します。各ルートにはすでに専用のHTMLファイルがあるので、キャッチオールのリライトは不要です。

npm run buildを使い、出力ディレクトリをoutにします。エクスポートには404.htmlが含まれるので、Pagesは存在しないパスにホームページではなくそれを返します。

ここでNext.jsを動かす方法は静的エクスポートだけです。サイトがリポジトリのパス配下にある場合は、basePathをそれに合わせてください。

リポジトリをインポートしてデプロイします。Vercelは、Next.jsのデプロイドキュメントに掲載されている検証済みアダプターの1つです。

Netlifyは独自の連携機能でNext.jsを実行しますが、Next.jsのドキュメントではまだ検証済みアダプターとして掲載されていません。機能の欠落がないか、Netlifyのドキュメントを確認してください。

Cloudflareは独自の連携機能でWorkers上にNext.jsを実行しますが、こちらもまだ検証済みアダプターではありません。Pagesの静的な手順ではなく、Cloudflareのフレームワークガイドに従ってください。

できません。GitHub Pagesはファイルを配信するだけで、next startを実行できません。静的エクスポートに切り替えるか、Node.jsを実行できるホストを選んでください。

Vite + React

Next.jsの静的エクスポート

完全なNext.jsアプリ

Vercel

Netlify

Cloudflare Pages

GitHub Pages

デプロイ手順の選択

何を作りましたか?

どこで動かしますか?

アプリとホストのすべての組み合わせ

コピー

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る