vercel.app のアドレスが Google にインデックスされていませんか? プレビューや重複を検索結果から外す方法
Google にインデックスされうる Vercel のアドレス、your-project.vercel.app が自社ドメインと競合する理由、リダイレクト・canonical・保護設定による対処法を解説します。
4分で読めます
Vercel のプロジェクトには、名刺に載せているもの以外にもアドレスがあります。自社ドメインの www.yourcompany.com。Vercel が作る本番用のアドレス your-project.vercel.app。さらに、デプロイごとに専用のアドレスがあり、プレビュー用にブランチごとのアドレスもあります。
これらのほとんどは Vercel が処理してくれるので、Google に表示されることはありません。ただ、たいてい1つだけ例外があり、同じ検索語で自社ドメインと競合してしまいます。この記事では、それぞれのアドレスの扱いと、その抜け穴をふさぐ方法を説明します。
Vercel がすでにしてくれていること
Vercel は、検索エンジンにページをインデックスしないよう伝える X-Robots-Tag: noindex ヘッダーを、次のデプロイに付けています。
- すべてのプレビューデプロイ、つまり本番以外のブランチからのデプロイ
- 過去の本番デプロイ。新しいデプロイが本番に切り替わると、それまでのデプロイは
noindexを返すようになります。
現在の本番デプロイには付きません。検索結果に表示させたいサイトそのものだからです。あるアドレスが何を返しているかは、コマンド1つで確認できます。
curl -sI https://your-project-git-feature-team.vercel.app | grep -i x-robots-tag2つの抜け穴
1. 本番の vercel.app アドレス
your-project.vercel.app は、自社ドメインと同じ本番ページを noindex なしで配信しています。Google がこのアドレスへのリンクを見つけると(古い README、共有したテスト、Vercel のプロジェクトを一覧にしたサイトなど)、すべてのページに2つのコピーがあることになり、どちらかを選ばなければなりません。重複によるペナルティはありませんが、評価が分散し、Google が望まないほうのアドレスを選ぶこともあります。
2. プレビュー用ブランチに設定した独自ドメイン
本番以外のブランチに staging.yourcompany.com のような独自ドメインを設定している場合、Vercel はそこに noindex を付けません。ステージング環境が Google に載ると、作りかけのページ、テスト用の価格、重複したコンテンツが自社のブランド名で表示されてしまいます。
対処法
vercel.app のアドレスを自社ドメインにリダイレクトする
最もすっきりした対処法は、そのホストだけに一致し、パスを引き継ぐ恒久的なリダイレクトです。こうすると your-project.vercel.app/pricing?plan=pro は www.yourcompany.com/pricing?plan=pro に転送されます。
{
"redirects": [
{
"source": "/:path*",
"has": [{ "type": "host", "value": "your-project.vercel.app" }],
"destination": "https://www.yourcompany.com/:path*",
"permanent": true
}
]
}ホストを正確に指定することが重要です。指定がないと自社ドメインが自分自身にリダイレクトされ、広すぎるパターンでは、まだ必要なプレビュー用のアドレスまで転送されてしまいます。
階層の深いページとクエリ文字列で試してください。308 と正しい Location が返ってくれば成功です。
curl -sI "https://your-project.vercel.app/pricing?plan=pro" | grep -iE "^HTTP|^location"canonical は自社ドメインの完全な URL で書く
すべてのページで、自社ドメイン上の自分自身のアドレスを、省略せずに canonical として宣言します。<link rel="canonical" href="https://www.yourcompany.com/pricing"> のような形です。よくある間違いは2つあります。
- リクエストのホストから canonical を組み立てている。
your-project.vercel.appで開くと、ページが vercel.app のアドレスを正式なものとして宣言してしまい、重複を自ら裏付けることになります。固定のサイト URL の設定から組み立ててください。 - 全ページがトップページを指している。 これは、ほかのすべてのページを無視するよう Google に頼んでいるのと同じです。
独自ドメインのプレビュー用ブランチに noindex を付ける
staging.yourcompany.com には、そのホストに限定してヘッダーを自分で追加します。
{
"headers": [
{
"source": "/:path*",
"has": [{ "type": "host", "value": "staging.yourcompany.com" }],
"headers": [{ "key": "X-Robots-Tag", "value": "noindex" }]
}
]
}代わりに robots.txt でブロックするのはやめましょう。クロールを禁止されたページは読まれないため、Google はその noindex を見ることができず、リンクだけを手がかりにアドレスが検索結果に表示されることもあります。
本番以外のすべてに Deployment Protection を有効にする
プロジェクトの設定で Deployment Protection を Standard Protection にすると、本番ドメイン以外のすべてのアドレスで Vercel へのログインが必要になります。この機能はすべてのプランで使えます。プレビューが公開されなくなるので、まだ発表していない内容を守るうえでも役立ちます。外部のサービス(テストの実行環境や、確認を依頼した顧客など)が保護されたプレビューにアクセスする必要がある場合は、そのための回避オプションが用意されています。
Google にすでに載っているものを片付ける
vercel.app のアドレスやステージング用のドメインがすでに Google に載っている場合は、次の手順で対応します。
- まずリダイレクトか
noindexをデプロイします。Google は次にそのページを訪れて変更に気づいたときに、ページを削除します。 site:your-project.vercel.appで検索し、何がインデックスされているかを確認します。- より早く非表示にしたい場合は、Search Console の削除ツールを使います。アドレスは約6か月間非表示になります。恒久的に外すのは、あくまでリダイレクトや
noindexです。
問題を消すためにプロジェクトやドメインを削除するのはやめましょう。突然エラーを返すようになったアドレスでは、Google はたどる先を失います。リダイレクトなら、そのアドレスの評価を自社ドメインに引き継げます。
デプロイのたびに
こうした設定は、気づかないうちに壊れます。新しい vercel.json でリダイレクトが消えたり、フレームワークのアップグレードで canonical の組み立て方が変わったりします。デプロイで SEO が壊れるパターンで紹介したように、デプロイ後に重要なページを確認する際は、canonical と、vercel.app のアドレスへのリクエスト1回も確認項目に加えてください。
SEOVercelホスティング
あわせて読みたい
記事一覧
ウェブサイト
ビルドは成功、でも SEO は壊れている:テストでは気づけないデプロイの落とし穴
ビルドもテストも通ったのに、Google からページが消えることがあります。見落としやすい8つの変更と、それぞれを数分で見つける方法、デプロイ後に確認すべきことを解説します。
6分で読めます

ウェブサイト
ホームページの月額保守には何が含まれるのか(そして誰も保守しないと何が起きるのか)
バックアップ、アップデート、監視、更新手続き、フォーム。サイトに毎日・毎月・四半期ごとに必要な作業の実践的なチェックリストと、保守を依頼する前に確認すべき質問をまとめました。
5分で読めます

ウェブサイト
お問い合わせフォームのメールが迷惑メールに入る理由と、SPF・DKIM・DMARC による解決法
サイトのフォームから届くメールが迷惑メールに入る、または届かない。原因の多くは内容ではなく送り方です。確認すべき点と、設定すべき3つの DNS レコードを解説します。
5分で読めます