使い倒し研究所
サイト制作・公開

Netlifyでデプロイしたのに反映されない・失敗するときの切り分け方

PR本記事にはプロモーション(アフィリエイト広告)が含まれます。

「成功」と出ているのにサイトが変わらない。この状態が一番やっかいです。原因は毎回違うのに、確認する順番は同じでした。実際に遭遇した4つの詰まり方から手順を整理します。

結論:まず「どこまで届いているか」を確定させる

デプロイが反映されないとき、いきなり原因を推測しないでください。

原因はいくつもありますが、確認する順番は毎回同じです。手前から順に、どこで止まっているかを確定させます。

順番 確認すること 止まっていたら
1 送信は成功したか 権限・認証の問題
2 送ったファイルは正しいか 公開フォルダの指定ミス
3 サーバーには届いているか 反映は済んでいる(次へ)
4 自分のブラウザで見えるか キャッシュ

多くの場合、原因は3と4のあいだにあります。 つまりサーバーは新しくなっているのに、自分だけ古いものを見ている状態です。

手順1:ブラウザ以外で確認する

最初にこれをやってください。 ブラウザは古い内容を保存しているので、判断材料になりません。

curl -s https://example.com | grep "確認したい文字列"

ここで新しい内容が出れば、反映は完了しています。 問題はブラウザ側です。

curl はキャッシュを持たないので、サーバーの現在の状態がそのまま見えます。

反映済みなのに見えない場合

ブラウザのキャッシュです。再読み込みではなく、キャッシュを無視した再読み込みをしてください。

環境 操作
Mac(Chrome / Safari) Cmd + Shift + R
Windows(Chrome / Edge) Ctrl + Shift + R

それでも変わらないときは、シークレットウィンドウで開いてください。 ここで新しければ、確実にキャッシュです。

CSSと画像は特にキャッシュが残りやすい部分です。HTMLは新しいのに見た目が古いままなら、まずCSSを疑ってください。

手順2:送ったファイルが正しいか確認する

curl でも古い内容が返るなら、送っているファイルが違う可能性があります。

一番多いのが、公開フォルダの指定ミスです。

netlify deploy --dir . --prod

この .いま居るフォルダという意味です。1つ上の階層で実行すると、フォルダごと送られます。

その結果どうなるかというと、トップページが /site/index.html の位置に入り、https://example.com/ は404になります。

確認方法は、送る前に一覧を出すことです。

netlify deploy --dir . --dry-run

一覧の先頭が index.html になっているかを見てください。site/index.html のようにフォルダ名から始まっていたら、1階層ずれています。

消したはずのファイルが残る

Netlifyは送ったフォルダの中身で置き換えます。 手元で消したファイルは、次に送った時点でサイトからも消えます。

逆に、手元に残っている不要なファイルは公開され続けます。 「消したのに見える」場合、手元のフォルダにまだ実体があります。

私は静的サイトを生成する仕組みを自作していますが、元の原稿を消してもHTMLだけが残るという状態が起きました。生成の仕組みに、元がなくなったHTMLを自動で削除する処理を足して解決しています。

手順3:デプロイ自体が失敗している場合

コマンドがエラーで終わるときは、メッセージの種類で切り分けます。

403 が返る

権限の問題です。ファイルの中身は関係ありません。

私の環境では、--prod を付けたときだけ403になる状態が続きました。アカウント側の権限設定が原因で、コマンドや書き方をいくら変えても解決しませんでした。

回避方法があります。 いったん下書きとして送り、そのあとで本番に昇格させるという2段階に分けます。

# 1. 下書きとして送る(deploy_id が返る)
netlify deploy --dir site

# 2. その deploy を本番にする
netlify api restoreSiteDeploy --data '{"site_id":"...","deploy_id":"..."}'

やっていることは --prod と同じですが、通る経路が違うため成功します。

根本原因は解決していません。 ただ、公開できない状態が続くほうが損失が大きいので、回避策で運用しながら原因を追うという判断をしました。再現手順をメモに残しておけば、後から戻れます。

認証エラーが返る

ログインが切れています。

netlify status

これで現在のアカウントとサイトが出ます。別のアカウントになっていることもあるので、サイト名まで確認してください。

複数のサイトを扱っていると、意図しないサイトに送ってしまう事故が起きます。私は公開用のコマンドをスクリプトにまとめ、サイトIDを固定で書いておくことで防いでいます。

手順4:httpsだけ表示されない場合

HTTPでは見えるのに、HTTPSでエラーになる——これは反映の問題ではなく、証明書がまだ発行されていない状態です。

独自ドメインを設定した直後によく起きます。通常は数分から数時間で自動発行されます。

待っても発行されないときは、DNSの設定が原因です。

私が遭遇した実例では、bad dns for custom domain というエラーで止まり続けました。原因は、レンタルサーバー側にも同じドメインを登録していたことでした。

サーバー側にドメインを追加した時点で、そこにもDNSの設定が作られます。 Netlifyの設定と競合し、証明書の発行に必要な確認が通らなくなります。

登録を削除したら、すぐに発行されました。

公開先がNetlifyなら、レンタルサーバー側にドメインを追加しないでください。 詳しい経緯は独自ドメインをNetlifyに向けるときの落とし穴に書いています。

確認は次のコマンドでできます。

# 実際にどこを向いているか
dig example.com +short

# 証明書が出ているか(200なら発行済み)
curl -s -o /dev/null -w "%{http_code}\n" https://example.com

反映されない事故を防ぐ

原因を追う時間が惜しいので、送る前に自動で検査するようにしました。

私が公開前に必ず実行しているのは、次のような内容です。

検査 防げる事故
生成し直して差分が出ないか 手元とサイトの食い違い
公開対象の一覧を出す 1階層ずれ・不要ファイルの混入
主要ページのリンク切れ 404の公開

検査が通らなければ公開コマンドを実行しないという形にしてあります。人間が思い出して確認する方式は、急いでいるときに必ず飛ばします。

とくに「生成し直して差分が出ないか」は効きます。差分が出るなら、手元のHTMLは最新の原稿から作られていないということです。この状態で送ると、古い内容が公開されます。

よくある質問

デプロイは成功と出るのにサイトが変わりません

まずブラウザ以外で確認してください。curl でページを取得し、新しい内容が返るならサーバー側の反映は完了しており、原因はブラウザのキャッシュです。Cmd+Shift+R(WindowsはCtrl+Shift+R)で再読み込みするか、シークレットウィンドウで開いてください。

トップページが404になります

公開フォルダの指定が1階層ずれています。--dry-run で一覧を出し、先頭が index.html になっているか確認してください。フォルダ名から始まっていればずれています。

--prod を付けると403で失敗します

アカウント側の権限に起因することがあり、コマンドの書き方では解決しない場合があります。下書きとして送ってから本番に昇格させる2段階に分けると通ることがあります。処理内容は同じです。

httpsでだけ表示されません

証明書がまだ発行されていない状態です。通常は数分から数時間で自動発行されます。待っても発行されない場合はDNSの競合を疑ってください。レンタルサーバー側にも同じドメインを登録していると、証明書の発行に必要な確認が通りません。

消したファイルがサイトに残っています

手元のフォルダにまだ実体が残っています。Netlifyは送ったフォルダの中身で置き換えるため、手元にあるものは公開され続けます。--dry-run の一覧で実際に送られる対象を確認してください。

まとめ

公開手順そのものはNetlifyで静的サイトを公開する手順にまとめています。

この記事を書いた人
カズト(ETERNAL d.c.t)

ETERNAL d.c.t 代表。Web制作・生成AI導入支援・ライバー事務所運営を手がける。Claude Code / Codex CLI / n8n / Google Apps Script を実務で毎日使い、自社サイト・学習アプリ・業務自動化を内製している。このサイトでは、実際に自分が金を払って使ったツールだけを扱う。