Cloudflare Pages移行でインデックスが3件に。原因と回復の記録


移行そのものは、うまくいったと思っていました。

WordPressをやめて、Astro(アストロ)という静的サイトの仕組みに乗り換えたのが6月のはじめです。表示は目に見えて速くなり、プラグインの更新通知に追われる生活からも解放されました。その作業のことは前回の記事に書きました。

異変に気づいたのは、その9日後です。Search Console(グーグルが無料で出している、自分のサイトの検索状況を見るツール)を開いて、手が止まりました。

インデックス登録済み、つまりGoogleの検索結果に載る状態のページが、3件になっていました。移行前は約50件あったものです。

50件が3件。ほぼ全滅です。

結論から書きます

原因は、記事の中身ではありませんでした。

存在しないURLにアクセスしたとき、サーバーが「404 見つかりません」ではなく、トップページの内容をそのまま返していたのです。

これだけが原因でした。文章の質でも、更新頻度でもありません。設定を1つ入れ忘れていた、それだけで50件が3件になりました。

Googleの目に何が映っていたか

WordPress時代の記事のURLは、移行後に形が変わりました。旧URLは37件ありました。

Googleはまだ旧URLを覚えているので、順番に見に来ます。そのとき本来なら「このページはもうありません」と返すべきなのですが、私のサイトは全部にトップページを返していました。しかも、そのページには「このページの正式なURLはトップページです」という指定(canonicalタグ)が付いた状態で。

Googleから見れば、37件の別々のURLが、すべて同じトップページの写しに見えます。当然、重複と判断して除外します。こうして旧URLは「代替ページ」に分類され、インデックスから外れていきました。

なぜこんな挙動になるのか。Cloudflare Pagesという配信サービスの仕様で、トップレベルに404用のページが置かれていないと「これは1ページで完結するアプリだ」と判断し、あらゆるURLをトップに割り当てて応答するようになっているためです。Astroが出力する404ページの置き場所と、Cloudflareが探す場所が噛み合っていなかった、という組み合わせの問題でした。

親切な仕様が、こちらの都合では裏目に出た形です。誰も悪くないので、なおさら気づきにくい。

やったことは3つだけ

1. Search Consoleの所有権を取り戻す

そもそも「このプロパティへのアクセス権がありません」と表示され、数字さえ見られない状態でした。WordPress時代の所有者確認の方法が、移行で失われていたためです。

DNSレコードにTXTという情報を1行足す方式で再認証しました。GoogleとCloudflareの連携機能が働いて、「承認」を押すだけで自動で追加されます。拍子抜けするほど簡単でした。

なお、このTXTレコードは消してはいけません。掃除のつもりで削除すると、確認状態が失われます。

2. サイトマップを送る

サイトマップは、サイト内のページ一覧をGoogleに渡すファイルです。移行で作られていなかったので、追加しました。

1つ落とし穴があります。Astroが生成するサイトマップは sitemap.xml ではなく sitemap-index.xml という名前です。設定ファイルにサイトのURLを書いていないと、そもそも中身が空になります。私はここで一度つまずきました。

3. 旧URL37件を、301でつなぐ

これが本命です。301リダイレクトは「このURLは、こちらへ恒久的に移りました」とGoogleに伝える仕組みで、評価も引き継がれます。

_redirects という拡張子のないファイルを1つ作り、旧URLと新URLを1行ずつ並べていきます。カテゴリーやタグのページは移行先に相当するものがないので、記事一覧にまとめて向けました。日本語のURLも、変換せずそのまま書いて動きました。

37行を手で書く作業です。地味ですが、ここが効きました。

数字はこう戻りました

日付登録済みページ数
6月12日(対応前)3件
6月20日18件
7月8日21件
7月24日26件

リダイレクトを設定して1週間で、3件から18件まで戻りました。派手に戻るのは最初だけです。そこから先は2週間で3件、5件というペースで、じわじわとしか増えません。

Googleが旧URLを再確認しに来るのを待つ時間が必要で、こちらから急がせることはできません。6週間かけて26件。移行前の約50件に対して、まだ半分強です。焦る気持ちは分かりますが、待つ以外にやることがない期間があります。

「リダイレクトがあります」は、エラーではありません

回復の途中で、Googleから「インデックスに登録されない新しい要因が検出されました」というメールが届きます。心臓に悪い文面ですが、中を見ると分類が書かれていて、意味はそれぞれ違います。

  • ページにリダイレクトがあります — リダイレクトが正しく認識された証拠です。増えるのは良いことです
  • 代替ページ(適切なcanonicalタグあり) — 旧URLがまだ再確認待ちの状態です。確認が済めば上の分類に移って減っていきます
  • noindexタグによって除外 — RSSなど、意図してそうしているものです。放置で構いません

私は最初、この「リダイレクトがあります」を見て青くなり、余計な設定を足そうとしました。回復のサインだと知らなかったからです。焦って触らないほうがいい局面があります。

これから移行する人へ

一番伝えたいのは、移行する前に旧URLの一覧を作っておくことです。

私は移行を終えてから、記憶と管理画面をたどって37件を復元しました。先に一覧があれば、リダイレクトの設定は移行と同時に済み、そもそもこの1か月は発生していません。

もう一つ。移行の直後は「表示が速くなった」「管理が楽になった」という手応えのほうが大きく、検索の数字を見に行く気になりません。ですが移行してから2週間は、Search Consoleを開く習慣を持つほうがいい。傷が浅いうちなら、対応もずっと軽く済みます。

それでも、自分で持っていてよかった

ここまで読んで、面倒だと思われたかもしれません。実際、面倒でした。

ただ、原因を自分で突き止めて自分で直せたのは、サイトを自分の手の中に置いていたからです。どこかに任せきりだったら、原因の説明を待つ側になっていました。50代でこれを覚える価値は、そこにあると思っています。

とはいえ、全員がここまでやる必要はありません。お客様に見せる窓口が必要なだけなら、必要なことが書かれた1枚のページで十分です。私はそういうページを作る仕事もしているので、自分で組むのが難しいと感じたときは声をかけてください。作るところまで一緒にやります。

移行は、終わってからが本番でした。この記録が、同じところでつまずいた誰かの検索に引っかかってくれたら幸いです。