SEO移行ガイド:ランキングを失わずにプラットフォームを切り替える方法(2026)
WordPressからカスタムPHP、ShopifyからWooCommerce、または任意のプラットフォームから別のプラットフォームへ移行する場合でも、リスクは同じです:トラフィックの損失、ランキングの低下、リンク切れ。私は30以上のサイトを移行してきました – 小さなブログから50万ページのEコマースストアまで – そしてSEO価値を維持(そしてしばしば改善)する正確な方法を学びました。このガイドに従って、よくある落とし穴を避けてください。
移行が失敗する理由 – 厳しい真実
- 301リダイレクトを実装せずにURL構造を変更する。
- メタデータ(タイトルタグ、メタディスクリプション、カノニカルタグ)を失う。
- 新しいURLパターンによる内部リンクの破損。
- ステージング環境でリダイレクトをテストせずに公開する。
このガイドはこれらの問題のそれぞれに対処します。すべてのステップに従えば、ランキングを維持(そして時には改善)できます。
フェーズ1:移行前監査 – SEOベースラインをキャプチャする
何かに触れる前に、現在のサイトのSEOパフォーマンスを文書化します。公開後に比較するために必要です。
1. サイト全体をクロールする
Screaming Frog SEO Spider(500 URLまで無料)を使用して抽出:
- すべての内部URL(画像、PDFなどを含む)。
- 各ページのタイトルタグ、メタディスクリプション、H1。
- カノニカルタグ。
- レスポンスコード(200、301、404)。
- 内部リンクと外部リンク。
クロールをCSVにエクスポートします。これがURLマッピングマスターリストになります。
2. トップ50キーワードのランキングを記録する
Google Search Console(パフォーマンスレポート)またはSEMrush/Ahrefsなどの有料ツールを使用します。過去3か月のキーワード順位、インプレッション、CTRをエクスポートします。
3. オーガニックトラフィックレベルを文書化する
Google Analytics(またはGA4)で、過去30日間のオーガニックセッション、直帰率、コンバージョンデータを記録します。スクリーンショットを撮ります。これらを公開後に比較します。
4. すべてのバックリンクをダウンロードする
Google Search Console → リンク → 外部リンク → エクスポート。リンク元のドメインとページのリストを保存します。これらの古いURLが正しくリダイレクトされることを確認する必要があります。
5. XMLサイトマップを保存する
古いサイトにサイトマップ(例:`/sitemap.xml`)がある場合は、ダウンロードします。これはすべてのインデックスされたURLのクイックリストです。
フェーズ2:URLマッピング – 最も重要なステップ
まったく同じURLパスを維持すれば、ほとんどの移行リスクを回避できます。しかし、多くの場合、URLをクリーンアップ(日付を削除、カテゴリを短縮)したいでしょう。すべての古いURLから新しい同等のURLへの1:1のマッピングを作成します。
マッピングルールの例:
<code>/2023/01/why-custom-php → /blog/why-custom-php<br>/category/web-design → /services/web-design<br>/product?id=123 → /products/widget-name<br>/contact-us → /contact(可能であれば同じにする)</code>
マッピングファイルを作成するツール:
- 手動Excel/Google Sheets – 小規模サイト用(<500 URL)。
- 正規表現を使用したPythonスクリプト – 大規模サイト用。
- CMSエクスポート + スプレッドシート数式 – 新しいプラットフォームにパターンがある場合。
マッピングをCSVとして保存します。列:old_url、new_url。
フェーズ3:301リダイレクトを実装する
301リダイレクトはGoogleに「このページは永久に移動しました」と伝えます。Googleは古いページのランキングパワーのほぼ100%を新しいURLに転送します。永久移動に302(一時的)リダイレクトを決して使用しないでください。
オプションA – Apache .htaccess(200未満のリダイレクトに最適)
<code>Redirect 301 /old-url /new-url<br>Redirect 301 /2023/01/why-custom-php /blog/why-custom-php</code>
オプションB – PHPリダイレクトマップ(数千のリダイレクトに最適)
<code><?php<br>$redirects = json_decode(file_get_contents(__DIR__ . '/redirects.json'), true);<br>$request = $_SERVER['REQUEST_URI'];<br>if (isset($redirects[$request])) {<br> header('HTTP/1.1 301 Moved Permanently');<br> header('Location: ' . $redirects[$request]);<br> exit;<br>}<br>?></code>
オプションC – Nginx(多くのリダイレクトに`map`を使用)
<code>map $request_uri $new_uri {<br> /old-url /new-url;<br> /old-url2 /new-url2;<br>}<br>server {<br> if ($new_uri) {<br> return 301 $new_uri;<br> }<br>}</code>
重要なルール:リダイレクトチェーン禁止 – A → B → C を決して行わないでください。各ホップはわずかなリンク価値を失います。常に直接 A → C にリダイレクトします。
フェーズ4:メタデータを保持する – タイトルタグ、メタディスクリプション、カノニカル
新しいサイトは、古いサイトとまったく同じタイトルタグとメタディスクリプション(またはそれ以上)を出力する必要があります。
- CMS(WordPress、Shopify)を使用している場合、プラグインまたはCSVを介してメタデータをエクスポートします。
- カスタムPHPサイトを構築している場合、メタデータをデータベーステーブルまたはURLをキーとするPHP配列に保存します。
カスタムPHP実装の例:
<code><?php<br>$pageMetadata = [<br> '/services/web-design' => [<br> 'title' => 'カスタムウェブデザイン | BuiltToWinWeb',<br> 'description' => 'Lighthouseで100を獲得するハンドコードPHPウェブサイト。'<br> ]<br>];<br>if (isset($pageMetadata[$_SERVER['REQUEST_URI']])) {<br> $meta = $pageMetadata[$_SERVER['REQUEST_URI']];<br> echo '<title>' . htmlspecialchars($meta['title']) . '</title>';<br> echo '<meta name="description" content="' . htmlspecialchars($meta['description']) . '">';<br>}<br>?></code>
フェーズ5:ステージング環境ですべてをテストする
公開前に、サイトをステージングサブドメイン(例:`staging.yourdomain.com`)にクローンします。テスト:
- すべてのリダイレクト – Screaming Frogを使用して古いURLをクロールし、新しいURLに301を返すことを確認します。
- メタデータ – ページのサンプルをチェックして、タイトルと説明が正しいことを確認します。
- 内部リンク – 古いURLへのリンク切れがないこと。
- Core Web Vitals – Lighthouseを実行します。スコアが古いサイトより悪い場合はデバッグします。
フェーズ6:公開日 – DNSを切り替えてサイトマップを送信する
- DNSを新しいサーバーにポイントします(TTLは事前に300秒に設定する必要があります)。
- 新しいXMLサイトマップをすぐにGoogle Search Consoleに送信します(サイトマップ → 追加)。
- 「URL検査」ツールを使用してGoogleとしてフェッチし、最も重要なページのインデックスをリクエストします。
- 404エラーがないかリアルタイムログを監視します(サーバーログビューアまたはLogHoundなどのツールを使用)。
フェーズ7:公開後監視 – 最初の30日間
ほとんどの移行が失敗するのはここです – 公開してすべてがうまくいっていると仮定します。
毎日のチェック(最初の週):
- Google Search Console → カバレッジ → エラー。404はありますか?すぐに修正します(不足しているリダイレクトを追加)。
- Google Analytics → リアルタイムで、トラフィックが新しいサイトに着地していることを確認します。
毎週のチェック(2〜4週目):
- オーガニックトラフィックを移行前のベースラインと比較します(Google Analytics)。小さな低下(5〜10%)は正常です。それ以上の低下は問題を示しています。
- トップキーワードレポートを再実行します。特定のページのランキングが下がった場合、それらのURLが正しくリダイレクトされているか確認します。
- バックリンクの404を監視します – AhrefsまたはGSCを使用して、外部リンクが現在切れているかどうかを確認します。
低下が見られた場合:
- 誤ってrobots.txtをブロックしたり、`noindex`タグを追加したりしていないか確認します。
- 新しいサイトの方が高速であることを確認します(Core Web Vitals)。速度の改善は、小さなリダイレクト損失を相殺することがよくあります。
- サイトマップを再送信し、いくつかのキーページで「URL検査」を使用します。
よくある移行の落とし穴(およびその回避方法)
- 落とし穴: すべてのHTTP URLをリダイレクトせずにHTTPからHTTPSに変更する。解決策: サーバーレベルでグローバルなHTTP→HTTPSリダイレクトを追加します。
- 落とし穴: 新しいドメインに移行し、Google Search Consoleプロパティを更新しない。解決策: 新しいドメインをプロパティとして追加し、アドレス変更を送信します。
- 落とし穴: 画像URLを失う(画像切れ)。解決策: `/wp-content/uploads/` のパス構造を同じに保つか、画像URLのリダイレクトを作成します。
- 落とし穴: 古いURLを指す内部リンク(ハードコードされている)。解決策: 公開前にデータベースまたはコードベースで検索と置換を実行します。
事例研究:50,000ページのEコマース移行 – トラフィック損失0%
ある大手オンライン小売業者がMagentoからカスタムPHPプラットフォームに移行しました。課題:50,000の商品URLを `/catalog/product/view/id/123/` から `/products/widget-name/` に変更する必要がありました。
プロセス:
- Magentoデータベースからすべての古いURLをエクスポート。
- 商品名に基づいて新しいSEOフレンドリーなスラッグを生成。
- 50,000行のCSVマッピングを作成。
- 301を処理するためにPHPリダイレクトマップ(JSONファイル)を使用 – .htaccessの肥大化なし。
- 新しいURLをキーとするカスタムテーブルにメタデータ(タイトル、説明)を保存して、すべてのメタデータを保持。
- クローラーを使用してステージングとリダイレクトのテスト – 99.8%のカバレッジ。
結果:
- 最初の30日間のオーガニックトラフィック損失ゼロ。
- 60日後、ページ読み込みの高速化(カスタムPHP対Magento)によりトラフィックが12%増加。
- 最初の週以降、Search Consoleに404エラーはなし。
- 3か月以内にオーガニック検索からの収益が18%増加。
クライアントは現在コードを所有し、Magentoライセンス料を支払わず、URLを即座に更新できます。
移行チェックリスト(印刷可能なPDFサマリー)
- ☐ 移行前:クロール、ランキング、トラフィック、バックリンク、サイトマップ。
- ☐ URLマッピング:古い → 新しいの1:1 CSV。
- ☐ 301リダイレクトを実装(チェーンなし)。
- ☐ メタデータを保持(タイトル、説明、カノニカル)。
- ☐ ステージングでテスト(Screaming Frogクロール、Lighthouse)。
- ☐ 公開:DNS、サイトマップ送信、URL検査。
- ☐ GSCを30日間毎日監視し、404を修正。
- ☐ 30日後にランキングとトラフィックを比較。
ストレスなく移行する準備はできましたか?
私は30以上のサイトを移行してきました – 中小企業のブログからエンタープライズEコマースまで。URLマッピング、リダイレクト実装、メタデータ移行、ステージングテスト、公開後監視など、プロセス全体を処理します。ランキングを維持し、多くの場合パフォーマンスの向上が見られます。
あなたの移行について話し合いましょう。無料の、義務のない移行計画と見積もりを提供します。
データはBuiltToWinWebが実施した実際のクライアント移行に基づいています。個々の結果は、サイトの複雑さと既存のSEO健全性によって異なる場合があります。