はじめに
個人開発でつくった静的サイト(HTML1枚のツール)に、ファビコンとOGP画像を追加してVercelにデプロイしました。
ところが「画像が表示されない!」「別のアプリを上書きしちゃったかも!?」と、かなり肝を冷やす出来事があったので、原因と解決方法を自分用のメモとして残しておきます。
同じミスをする人の助けになればいいなと思います!
やろうとしていたこと
Vercelで配信している静的サイト(index.html 1枚だけの構成)に、次の画像を追加したかっただけでした。
- ファビコン(
favicon.ico/favicon.svg/icon.png) - Apple用アイコン(
apple-touch-icon.png) - SNSシェア用のOGP画像(
ogp.png)
<head> にタグを書いて、画像を index.html と同じフォルダに置いて、いざデプロイ。
npx vercel --prod
Vercelの使い方については別の記事でも紹介しています。👇

起きたトラブル
デプロイは成功したはずなのに、本番URLを見ると――
- ファビコンもOGPも反映されていない(古いまま)
- 画像のURLを直接開くと、ぜんぶ 404
さらに調べていくと、
まったく別のプロジェクト(Xのテンプレートを保存してある大事なアプリ)の本番が、今回の内容で上書きされている
ことが判明。
「消えちゃったの…!?」と本気で焦りました。
原因:デプロイ先が別プロジェクトにすり替わっていた
犯人は、フォルダの中に隠れていた .vercel フォルダでした。
このプロジェクトはテンプレートを複製して作ったもので、そのときに複製元のVercelリンク情報(.vercel/project.json)まで一緒についてきていたのです。
中身を見るとこうなっていました。
cat .vercel/project.json
# → {"projectId":"...","projectName":"sample-x-template"}
つまり、自分では「make(プロジェクト名)を更新している」つもりでも、npx vercel --prod の実際の公開先は、複製元の sample-x-template というまったく別のプロジェクトになっていた、というわけです。
だから本命のサイトは古いまま・画像も404だったし、無関係なアプリの本番が書き換わってしまった。
まず落ち着く:Vercelのデプロイは消えない
ここが一番大事な安心ポイントでした。
Vercelのデプロイは1回ごとに「変更不可のスナップショット」として全部保存され続けます。
上書きで前のデータが削除されることはありません。
起きていたのは「本番URLが指す先が新しいデプロイに切り替わった」だけ。
過去のデプロイは履歴にそのまま残っているので、元に戻せます。
元に戻す手順(Instant Rollback)
- Vercelダッシュボードで対象プロジェクトを開く
- 「Deployments」タブを開く
- 上書き前の(正しい)デプロイを日時で探す
- 「…」メニュー →「Instant Rollback」(または Promote to Production)
これで本番は一瞬で元通りになりました。ほっとした…。
根本解決:正しいプロジェクトに繋ぎ直す
間違ったリンク情報を消して、正しいプロジェクトにリンクし直します。
① 間違ったリンク情報を削除(.vercelはリンク情報だけなので消してOK)
rm -rf .vercel
リンク先を「別のプロジェクトに変えたい」ときは、先に古いリンク情報を消してまっさらにしてから vercel link するのが確実。
② 正しいプロジェクトに繋ぎ直す(対話でアカウントとプロジェクトを選ぶ)
npx vercel link
npx vercel link の後に質問されます。
Set up "~/make"?→ Y- スコープ(チーム/個人アカウント)→ あなたのアカウントを選択
Link to existing project?→ YWhat's the name of your existing project?→makeと入力
が成功すると、こんな表示になります。
✓ Linked user-xxxx-projects/make
③ 本番デプロイ
npx vercel --prod
④ 本番URLで画像がちゃんと上がったか確認。
curl -s -o /dev/null -w "%{http_code}\n" サイトURL/favicon.svg
# → 200 が返ればOK
無事、ファビコンもOGPも正しく反映されました。
デプロイの手順
ここでまとめておきます。
STEP 0:まずリンク先を確認(毎回・最重要)
cat .vercel/project.json
- 出てきた
projectNameがmake→ OK。STEP 1へ。 - 違う名前が出た→ 先に直す ↓
rm -rf .vercel npx vercel link # 対話で プロジェクト名 を選ぶ
直ったら STEP 1 へ(このあとは②と同じ)。
STEP 1:プレビューで確認
npx vercel # プレビュー用URLが出る → ブラウザで開いて見た目チェック
STEP 2:本番デプロイ
npx vercel --prod
STEP 3:本番URLで最終確認
curl -s -o /dev/null -w "%{http_code}\n" https://make.vercel.app/確認するファイル
# → 200 が返ればOK
今後のためのチェックリスト
同じ事故を繰り返さないために、デプロイ前にこれだけは確認するようにします。
- デプロイ先を必ず確認する(一番大事)
cat .vercel/project.json
projectName が意図したものか見る - いきなり本番に上げない。まずプレビュー。
npx vercel
プレビューURLで確認
npx vercel --prod
問題なければ本番へ
プレビューは本番URLに影響しないので、万一リンク先を間違えても本番を壊しません。 - 本番URLで実物を確認する(HTMLの中身・画像が200かをチェック)
- テンプレを複製して新規プロジェクトを作ったときは、複製元の
.vercelが紛れ込んでいないか確認する。あればrm -rf .vercel→npx vercel linkで繋ぎ直す。
おまけ:画像とタグのメモ
- ファビコン・OGP画像は、
index.htmlと同じフォルダ直下に置けばOK(npx vercel --prodがフォルダごとアップロードしてくれる)。専用の置き場所は不要。 - OGPの
og:imageとog:urlは、本番ドメインと一致した絶対URL(https://…)で書く。相対パスやドメイン違いだと、SNSでシェアしたときに画像が出ません。 - OGP画像の推奨サイズは 1200×630(約1.91:1)。
まとめ
今回の学びは、「デプロイは、どこに公開されるかを毎回確認する」。
この一言に尽きます。テンプレ複製から作ったプロジェクトは特に、リンク先がすり替わっていることがあるので要注意。そして、もし事故ってもVercelなら過去のデプロイからロールバックできる――と知っているだけで、心の余裕がぜんぜん違いました。

