SEOランキングを失わないCMS移行: 完全ガイド
企業が一夜にして有機検索トラフィックの40〜60%を失うのを見てきました。それはCMS移行が「単なるテックプロジェクト」だと考えた場合です。違います。これはSEOプロジェクトであり、技術的な要素を含んでいます。その言葉の順序が重要なのです。
過去7年間、私はWordPressからヘッドレスセットアップへの移行、DrupalからSanityへの移行、レガシー.NETサイトからNext.jsへの移行など、あらゆる種類の移行をリードまたは監督してきました。スムーズにいったものもあります。引き継いで修正する必要があった災難的なものもありました。このガイドは、その両側で学んだすべてのことです。
リスクは現実的です。2024年のAhrefs調査によると、CMS移行を実施したサイトの34%が20%を超えるトラフィック低下を経験し、回復までに6ヶ月以上かかっています。しかし、ここが重要です — そうである必要はありません。適切なプロセスを使えば、CMSを移行しながら、ランキングを維持したまま、時には改善さえして完了することができます。
目次
- CMS移行がSEOを殺す理由(間違った場合)
- 移行前監査:安全ネット
- URLの構造:最も重要な単一要因
- リダイレクトマッピング:すべてを救う退屈な作業
- コンテンツパリティ:単なるコピペ以上
- 移行日のテクニカルSEOチェックリスト
- メタデータ、スキーマ、構造化データの移行
- 内部リンク保持
- パフォーマンスとCore Web Vitals
- 移行後モニタリングプロトコル
- ヘッドレスCMS移行:特別な考慮事項
- 回復計画:ランキングが低下した場合の対処方法
- FAQ

CMS移行がSEOを殺す理由(間違った場合)
Googleはどのようなコアウェブサイトを使用しているかは気にしません。それはURL、コンテンツ、ページ速度、内部リンク、そしてGoogleが何年にもわたってあなたのサイトについて構築した数千のシグナルを気にします。これらをすべて引き出して新しいものに置き換えると、本質的にGoogleにあなたのサイト全体をゼロから再評価するよう求めることになります。
典型的に何が起こるかは次のとおりです:
- 適切なリダイレクトなしでURLの構造が変わる(これだけで移行後のトラフィック低下の約70%を占める)
- コンテンツが修正、切り詰め、または再編成されるトピック関連シグナルを変更する方法で
- 内部リンクが壊れる新しいCMSが異なるURLパターンを生成するため
- ページ速度が低下する新しいテンプレートのパフォーマンスを誰もテストしなかったため
- メタデータが失われる — タイトルタグ、説明、カノニカルタグ、hreflang属性
- 構造化データが消える古いCMSが自動生成するプラグインを持っていたため
最悪の部分は?これらの問題は複合します。単一の壊れたリダイレクトチェーンは数百のページを通じてカスケードできます。
移行前監査:安全ネット
新しいCMSの単一行のコードにも触れる前に、現在のSEO状態の完全なスナップショットが必要です。ビデオゲームのセーブポイントと考えてください — 比較する何かが必要です。
クロールしてエクスポートするもの
Screaming Frog、Sitebulb、またはAhrefs Site Auditを使用して、既存のサイト全体をクロールします。すべてをエクスポートします:
# キャプチャするキーデータポイント:
- すべてのURL(ページ分けされたページを含めて、すべてのURL)
- HTTPステータスコード
- タイトルタグ
- メタディスクリプション
- H1タグ
- カノニカルタグ
- hreflangタグ(多言語の場合)
- 内部リンク(ソースとターゲット)
- ページあたりの単語数
- ページあたりのスキーママークアップタイプ
- 画像のURLとalt属性
- レスポンス時間
- Core Web Vitalsスコア
ランキングのベースライン
Google Search Consoleから過去16ヶ月のランキングデータを取得します。エクスポートします。また、使用しているサードパーティツール(Ahrefs、SEMrush、Moz)からデータを取得します。以下が必要です:
- オーガニックトラフィック別のトップ500ページ
- クリック別のトップ1000キーワード
- キーワードのページ1にランキングするすべてのページ
- フィーチャー スニペット付きページ
- リッチ結果付きページ
移行後に参照できるスプレッドシートまたはデータベースにすべてを保存します。通常、各データセット用のタブを備えたGoogle Sheetを使用していますが、より大きなサイト(10,000ページ以上)では、クイックPostgreSQLデータベースをスピンアップします。
マネーページを特定する
すべてのページが同じではありません。95%のページを完全に保持しているが、上位20の収益を生成するページを壊す移行は、それでも災難です。ページを次の方法で特定します:
- オーガニックトラフィック量
- コンバージョン率
- 収益の帰属
- バックリンク数(これらが権威を渡す)
- 高価値キーワードのランキング位置
これらのページは移行中にホワイトグローブ処理を受け取ります。
URLの構造:最も重要な単一要因
これは極端に聞こえるかもしれないことを言うつもりです:正確なURLの構造を保つことができるなら、そうすべきです。 古いURLが醜いとしても。日付が含まれていたとしても。クエリ文字列パラメータを使用していたとしても。
すべてのURL変更がリスクです。ポイント。
URL変更が避けられない場合
時々、URLを変更する必要があります。おそらく、サブドメインを統合したり、HTTPからHTTPSに切り替えたり(ただし、それは数年前に起こっているべきでした)、または古いCMSが/index.php?id=4523&cat=7のようなURLを生成しました。
URLを変更する必要がある場合、以下はリスクの階層です:
| 変更タイプ | リスクレベル | 例 |
|---|---|---|
| ドメイン変更 | 非常に高い | oldsite.com → newsite.com |
| プロトコル変更 | 中程度 | http → https |
| サブドメイン変更 | 高い | blog.site.com → site.com/blog |
| パス再構成 | 中程度〜高い | /2024/01/post-name → /blog/post-name |
| スラッグ変更 | 中程度 | /old-slug → /new-slug |
| パラメータからパスへ | 中程度 | /?p=123 → /actual-slug |
| トレーリングスラッシュ変更 | 低い | /page → /page/ |
URLマッピングスプレッドシート
これらの列を含むマッピングドキュメントを作成します:
| 古いURL | 新しいURL | ステータスコード | 優先度 | 注記 |
|---------|---------|-------------|----------|-------|
| /old-page | /new-page | 301 | 高 | トップ10(トラフィック別) |
| /removed-page | /relevant-page | 301 | 中程度 | コンテンツマージ |
| /still-exists | /still-exists | 200 | 低 | 変更なし |
500ページのサイトの場合、これは集中した作業の2〜3日かかります。10,000ページのサイトでは、正規表現パターンと自動マッピングスクリプトが必要になります。私たちはヘッドレスCMS開発プロジェクトで正確にこのためのカスタム移行ツールを構築しました。

リダイレクトマッピング:すべてを救う退屈な作業
リダイレクトはあなたの安全ネットです。変更される古いURLはすべて、対等な新しいURLに301リダイレクトする必要があります。ホームページではありません。カテゴリページではありません。実際の対等なコンテンツです。
リダイレクトの規則
- 常に301(永続)リダイレクトを使用してください。302(一時的な)ではなく。Googleはそれらを異なる方法でリンク権を転送するため。
- リダイレクトチェーンを避けてください。 AがBにリダイレクトし、BがCにリダイレクトする場合、それはチェーンです。各ホップはいくつかの権を失います(Googleはそうでないと言っていますが、Cyrus Shepardなど2024年の実証的なデータは異なることを示唆しています)。
- すべてをホームページにリダイレクトしないでください。 これは「ソフト404」と呼ばれ、Googleは最終的にそれらのURLを本当に消えたものとして扱います。
- 可能な限り1対1マッピングを処理してください。 古いページ → 対等な新しいページ。
- 削除されたコンテンツを適切に処理してください。 ページに対等がない場合、最も関連性の高い主題的に関連するページを見つけるか、適切な410(Gone)ステータスを返します。
さまざまな環境での実装
Next.js(Next.js開発作業で広く使用)の場合:
// next.config.js
module.exports = {
async redirects() {
return [
{
source: '/old-blog/:slug',
destination: '/blog/:slug',
permanent: true,
},
{
source: '/category/:cat/post/:id',
destination: '/blog/:id',
permanent: true,
},
// 大きなリダイレクトリストの場合、JSONファイルからインポート
...require('./redirects.json'),
]
},
}
Nginx用:
# 個別リダイレクト
rewrite ^/old-page$ /new-page permanent;
# パターンベースのリダイレクト
rewrite ^/blog/(\d{4})/(\d{2})/(.*)$ /blog/$3 permanent;
# 大規模リストのマップベースリダイレクト
map $request_uri $new_uri {
include /etc/nginx/redirects.map;
}
server {
if ($new_uri) {
return 301 $new_uri;
}
}
Vercel/エッジベースのホスティングの場合:
// vercel.json
{
"redirects": [
{
"source": "/old-path/:match*",
"destination": "/new-path/:match*",
"permanent": true
}
]
}
ゴーライブ前のリダイレクトテスト
これは譲れません。チームが3,000のリダイレクトルールを書いてテストせずにデプロイするのを見てきました。そのチームにならないでください。
# リダイレクトをテストするシンプルなbashスクリプト
while IFS=, read -r old_url expected_url; do
actual_url=$(curl -Ls -o /dev/null -w %{url_effective} "$old_url")
if [ "$actual_url" != "$expected_url" ]; then
echo "FAIL: $old_url -> $actual_url (expected $expected_url)"
fi
done < redirect_test_urls.csv
コンテンツパリティ:単なるコピペ以上
「コンテンツパリティ」と言う時、単に本文が一致することを意味するのではありません。コンテンツ体験全体が対等またはそれ以上である必要があることを意味します。
Googleのコンテンツとしてカウントされるもの
- メイン本文テキスト
- 見出し(H1-H6階層)
- 画像とalt属性
- ビデオとembeds
- テーブル
- リスト
- 著者情報(E-E-A-Tシグナル)
- 発行日と更新日
- コメント(はい、Googleはこれらをインデックスします)
- 関連コンテンツリンク
一般的なコンテンツパリティミス
サイドバーコンテンツを削除する。 古いサイトには、関連記事、人気投稿、またはコンテキストリンク付きのサイドバーがありました。新しいデザインはフルワイドでクリーンです。これらのリンクは内部リンクアーキテクチャの一部でした。あなたはそれを壊しました。
見出し階層を変更する。 古いページのH1が「2025年の最高のReactフレームワーク」で、新しいCMSテンプレートがクリーンなタイトルが必要なために「Reactフレームワーク」に変更した場合、ランキングシグナルを変更しました。
画像のalt属性を失う。 ほとんどのCMS移行ツールは画像をインポートしていますが、alt属性を削除しています。少なくともトップ100ページで手動でこれを確認してください。
コンテンツをマージまたは分割する。 2つのページを1つに結合する場合、セカンダリURLを結合されたページにリダイレクトする必要があります。1つのページを複数に分割する場合、元のURLは最も関連性の高い新しいページにリダイレクトする必要があり、一時的なランキング変動が表示される可能性があります。
移行日のテクニカルSEOチェックリスト
移行日に使用するチェックリストです。印刷してください。モニターに貼ってください。
## 事前起動(起動日)
- [ ] すべてのリダイレクトがテストおよび確認済み
- [ ] XMLサイトマップが新しいURLで更新
- [ ] 古いサイトマップが削除またはリダイレクト
- [ ] robots.txtが検証済み(新しいサイトをブロックしていない)
- [ ] カノニカルタグが正しい新しいURLを指している
- [ ] hreflangタグが更新済み(多言語の場合)
- [ ] すべてのドメイン/サブドメインでSSL証明書が有効
- [ ] CDNキャッシュをパージ
- [ ] DNS TTLを事前に48時間低下
## 起動後(1時間以内)
- [ ] Screaming Frogで新しいサイトをクロール
- [ ] Google Search Consoleで新しいサイトマップを送信
- [ ] トップ20マネーページのインデックスをリクエスト
- [ ] 意図しないnoindexタグがないか確認
- [ ] robots.txtがアクセス可能か確認
- [ ] 50個のランダムリダイレクトを手動でテスト
- [ ] Rich Results Testで構造化データを確認
- [ ] トップページのCore Web Vitalsを確認
## 起動後(24時間以内)
- [ ] Google Search Consoleでクロールエラーを監視
- [ ] サーバーログで404スパイクをチェック
- [ ] Google Analytics/タグトラッキングがすべてのページで発火することを確認
- [ ] インデックス済みページ数を比較(site:yourdomain.com)
- [ ] すべてのフォームとコンバージョンパスをテスト
メタデータ、スキーマ、構造化データの移行
これはWordPressからヘッドレスへの移行の多くが崩れるところです。WordPressサイトは、多くの場合、Yoast SEOまたはRank Mathに依存して、メタタグ、Open Graphデータ、スキーママークアップを自動的に生成します。Sanity、Contentful、またはStoryblokなどのヘッドレスCMSに移行すると、その自動化は消えます。
保持する必要があるもの
| 要素 | WordPress での場所 | ヘッドレス での場所 |
|---|---|---|
| タイトルタグ | Yoast SEOプラグイン | フロントエンドフレームワークhead管理 |
| メタディスクリプション | Yoast SEOプラグイン | フロントエンドフレームワークまたはCMSフィールド |
| OG画像 | Yoast/自動生成 | CMSフィールド + フロントエンドレンダリング |
| JSONLDスキーマ | プラグイン生成 | フロントエンドのカスタムコード |
| パンくずリストスキーマ | プラグイン生成 | コンポーネントレベルの実装 |
| FAQスキーマ | プラグインまたは手動 | CMS構造化コンテンツ + フロントエンド |
| カノニカルURL | 自動生成 | 明示的な実装が必要 |
Astroベースのビルドの場合、通常、専用のSEOコンポーネントを使用してこれを処理します:
---
// src/components/SEOHead.astro
const { title, description, canonical, ogImage, schema } = Astro.props;
---
<title>{title}</title>
<meta name="description" content={description} />
<link rel="canonical" href={canonical} />
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:image" content={ogImage} />
{schema && (
<script type="application/ld+json" set:html={JSON.stringify(schema)} />
)}
内部リンク保持
内部リンクはSEOの循環系です。ページ権限を分配し、コンテンツの関係をGoogleに示し、クロール性を支援します。
移行中に、内部リンクは2つの方法で壊れます:
- コンテンツ内のハードコード化されたリンクが古いURLを指す
- プログラマティックなリンク(ナビゲーション、フッター、サイドバー、関連投稿)新しいCMSが異なる方法で生成するもの
コンテンツリンクの修正
移行前に、コンテンツ内のすべての内部リンクを検索して置換するスクリプトを実行します:
import re
def update_internal_links(content, redirect_map):
"""コンテンツ内の古い内部URLを新しいものに置換します。"""
for old_url, new_url in redirect_map.items():
# 絶対URLと相対URLの両方をマッチング
content = content.replace(f'href="{old_url}"', f'href="{new_url}"')
content = content.replace(
f'href="https://yourdomain.com{old_url}"',
f'href="https://yourdomain.com{new_url}"'
)
return content
内部リンクのリダイレクトだけに頼らないでください。はい、リダイレクトは機能しますが、すべてのリダイレクトホップはレイテンシーを追加し、(おそらく)リンク権を薄めます。ソースでリンクを修正してください。
パフォーマンスとCore Web Vitals
CMS移行は、技術的なSEOメトリクスで大幅なパフォーマンス改善を実現するか、Core Web Vitalsを完全に下げる唯一のチャンスです。
Googleの2025年のランキングアルゴリズムは、Core Web Vitalsをランキングシグナルとして使い続けています。閾値は変わっていません:
| メトリック | 良好 | 改善が必要 | 不良 |
|---|---|---|---|
| LCP(最大のコンテンツフルペイント) | ≤ 2.5秒 | 2.5秒 — 4.0秒 | > 4.0秒 |
| INP(インタラクションから次のペイント) | ≤ 200ms | 200ms — 500ms | > 500ms |
| CLS(累積レイアウトシフト) | ≤ 0.1 | 0.1 — 0.25 | > 0.25 |
古いWordPressサイトのLCPが3.8秒で、新しいNext.jsサイトが1.2秒に達する場合、待っている本物のランキングブーストです。しかし、新しいサイトが2MBのJavaScriptバンドルをロードしていて、LCPが5秒にジャンプした場合、移行の上に新しい問題を作成しただけです。
ゴーライブ前に、Lighthouse、WebPageTest、Chrome UXレポートを使用してステージングサイトを徹底的にテストしてください。
移行後モニタリングプロトコル
移行後の30日間は重要です。以下は、私が従うモニタリングスケジュールです:
週1:日次モニタリング
- Google Search Console:クロール統計、カバレッジレポート、パフォーマンス
- サーバーログ:404エラー、500エラー、リダイレクトループ
- ランキングトラッカー:トップ50キーワード
- オーガニックトラフィック:前年同期の日比較較
週2-4:週次モニタリング
- 移行前ベースラインに対する完全サイトクロール比較
- インデックス済みページ数のトレンド
- 新しいバックリンク獲得(外部サイトからの壊れたリンク)
- コンバージョンレート比較
月2-3:隔週モニタリング
- ロングテールキーワードのランキング安定性
- 新しいキーワードの出現
- Core Web Vitalsフィールドデータ(約28日で投入されるまでに時間がかかります)
移行後最初の2〜4週間での一時的なランキング変動は正常です。Googleはあなたのサイトを再クロールして再評価しています。すべてを正しく行っている場合、ランキングは4〜6週間以内に安定化し、ベースラインに戻るはずです。8週間後に回復していない場合、何か問題があります。
ヘッドレスCMS移行:特別な考慮事項
ヘッドレスCMSアーキテクチャへの移行は、従来のCMS間移行が行わない固有の課題を導入します。
サーバー側レンダリングは譲れません
ヘッドレスフロントエンドがすべてをクライアント側でレンダリングする場合(SPA風)、Googleはコンテンツをインデックスするのに苦労します。Googleはjavascriptをレンダリングできますが、サーバーレンダリングHTMLをクロールするより遅く、信頼性が低いです。
SSRまたはSSGを使用してください。ポイント。Next.js(サーバーコンポーネント付きApp Router)やAstro(デフォルトではサーバーファースト)のようなフレームワークがこれを簡単にします。
コンテンツモデリング差異
従来のCMSはコンテンツをHTMLブロブとして保存します。SanityなどのヘッドレスCMS(Portable Text、ブロック)は構造化コンテンツを使用します。移行中に、以下が必要です:
- 古いHTMLコンテンツを構造化ブロックに解析
- セマンティック意味を保持する(見出し、リスト、強調)
- 埋め込みメディア(画像、ビデオ、iframe)を処理
- 内部リンクを変換
- インラインスキーマまたは特別なフォーマットを保持
これは本当に難しい仕事であり、ヘッドレスCMS開発プロジェクトでかなりの時間を費やす場所です。自動化ツールは80%の方法で取得します。最後の20%は手動レビューと整理です。
プレビューとステージングワークフロー
スイッチをフリップする前に、新しいヘッドレスセットアップはプロダクションをミラーリングするステージング環境が必要です。これは以下を意味します:
- 同じリダイレクトルール
- 同じCDN設定
- 同じレンダリング動作
- リアルなコンテンツ(loremではなくipsum)
Screaming Frogでステージング環境をクロールし、移行前のベースラインと比較してください。すべての矛盾は潜在的なランキング損失です。
回復計画:ランキングが低下した場合の対処方法
最善の努力にもかかわらず、時々物事は横に行きます。これはトリアージプロセスです:
- クロールブロックをチェックしてください。 robots.txtはGooglebotをブロックしていますか?意図しないnoindexタグはありますか?これは#1移行後の間違いです。
- リダイレクトが機能していることを確認してください。 100個のランダムな古いURLをスポットチェックしてください。彼らは正しく301ing?
- リダイレクトチェーンとループを探してください。 これらは静かな殺し屋です。
- コンテンツを比較してください。 Wayback Machineであなたのトップ20ページを上げて、現在と比較してください。コンテンツが足りませんか?
- カノニカルタグをチェックしてください。 彼らは正しいURLを指していますか?すべてのページで自己参照のcanonicals?
- 構造化データを監査してください。 トップページでGoogle's Rich Results Testを使用してください。
- Core Web Vitalsをレビューしてください。 パフォーマンスが低下しましたか?
- Search Consoleで再考慮またはクロール/再インデックスリクエストを送信してください。
問題を特定して修正した場合、Googleは通常1〜3週間以内に再評価します。重大な低下の場合、回復には2〜4ヶ月かかることがあります。
移行がうまくいかなかったのを助けるか、最初からそれを正しく行いたいですか?私たちはこれらのダースを処理してきました — あなたの特定の状況について話し合うために連絡してください。
FAQ
SEOランキングを失わないCMS移行にはどのくらい時間がかかりますか?
1,000ページ未満のサイトの場合、準備、移行、安定化の4〜8週間を計画してください。より大きなサイト(10,000+ページ)には3〜6ヶ月かかることができます。実際の切り替えは1日で起こるかもしれませんが、計画と移行後のモニタリングは時間の大部分を取ります。準備段階を急いでいることはランキングがどのように失われるかです。
CMS移行中に一時的にランキングを失いますか?
最初の2〜4週間の上下動は正常で予想されます。Googleはあなたのサイトを再クロールし、リダイレクトを処理し、ページを再インデックスする必要があります。適切に301リダイレクトを実装し、コンテンツパリティを維持している場合、ランキングは4〜6週間以内にベースラインに戻るはずです。8週間以上続く大幅な低下は、調査が必要な問題を示しています。
CMS移行中にURLの構造を変更する必要がありますか?
絶対に必要でない場合のみ。すべてのURL変更がランキングへのリスクです。現在のURLが機能している場合(醜いとしても)、それらを保持してください。技術的な理由でURLを変更する必要がある場合、すべての古いURLには新しい対等への適切な301リダイレクトがあることを確認してください。古いURLをホームページにバッチリダイレクトしないでください。
2025年のSEOに最適なCMSはどれですか?
正直に言うと、ほぼすべての最新のCMSは良好なSEO用に設定できます。より重要なのはフロントエンドの実装です。ヘッドレスCMS(Sanity、Contentful、Storyblok)を適切に構築されたNext.jsまたはAstroフロントエンドと組み合わせると、Core Web VitalsなどのテクニカルなSEOメトリクスでWordPressを上回ることができます。しかし、良好なホスティングと正しいプラグインを備えたWordPressは依然として完全に機能しています。「最高の」CMSは、あなたのチームが正しく使用できるものです。ヘッドレスビルドを評価している場合は、価格ページをチェックしてください。
301リダイレクトが多すぎるのはいくつですか?
ハード制限はありません。Googleは301リダイレクトを問題なく処理することを確認しており、大規模でも同様です。100,000以上のリダイレクト付きサイトは正常に機能します。重要なのは各リダイレクトが正確である(正しい目的地を指している)ことと、チェーン(リダイレクト → リダイレクト → リダイレクト)を避けることです。サーバーパフォーマンス側では、リダイレクトルールを効率的に保ちます — 順序付けされたルール評価ではなく、大きなリストの場合はマップベースのルックアップを使用します。
すべて同時に行う代わりに、段階的にCMSを移行できますか?
はい、大規模なサイトの場合、段階的な移行はしばしば安全です。まずブログを移行し、次にプロダクトページ、次にランディングページを移行することもできます。これにより、各フェーズの影響を監視し、サイト全体に影響を与える前に問題をキャッチできます。トリッキーな部分は、古いCMS上のコンテンツと新しいCMSのコンテンツがハイブリッド状態を管理することです。これは通常、慎重なリバースプロキシまたはルーティング設定を必要とします。
CMS移行SEO監査に必要なツールは何ですか?
最小限:Screaming Frog(またはSitebulb)をクロールするための、ランキングおよびインデックスデータ用のGoogle Search Console、およびリダイレクトテストスクリプト。便利な追加機能には、バックリンクおよびランキング追跡用のAhrefsまたはSEMrush、トラフィック比較用のGoogle Analytics、およびサーバーログアナライザーが含まれます。ヘッドレス移行の場合は、Lighthouse CIまたはWebPageTestもパフォーマンスモニタリング用に必要になります。
ヘッドレスCMSへの移行はSEOを改善しますか?
自動的には。ヘッドレスCMS自体はSEOに影響しません — フロントエンドの問題です。しかし、ヘッドレスアーキテクチャは、フロントエンドコードを完全に制御できるため、より高速で軽いサイトをもたらすことが多いです。SSR/SSGで構築し、画像を最適化し、JavaScriptを最小化し、適切なテクニカルSEOを実装する場合、Core Web Vitalsおよび結果的にランキングで意味のある改善を見ることができます。移行自体はニュートラルです;新しいアーキテクチャで構築するものが違いを生み出すものです。