



WithCodeMedia-1-pc
WithCodeMedia-2-pc
WithCodeMedia-3-pc
WithCodeMedia-4-pc




WithCodeMedia-1-sp
WithCodeMedia-2-sp
WithCodeMedia-3-sp
WithCodeMedia-4-sp









生徒サーバーを乗り換えたいんですが、WordPressの引っ越しって何から手をつければいいですか? 表示が消えたら怖くて…。
ペン博士順番さえ守れば怖くないよ。要はファイルとデータベースを運んで、URLを書き換えて、DNSを切り替えるだけ。旧サイトを残したまま新サーバーで確認できるから、失敗しても戻せる。
サーバーの乗り換え、ドメインの変更、本番公開前のテスト環境への複製。WordPressの移行は作業自体は数時間ですが、順番を誤ると表示が崩れたりリンクが切れたりします。
失敗の多くは「DNSを先に切り替えてしまう」「URLの書き換えを本文だけで済ませる」という2点に集中しています。逆に言えば、この2つを外さなければ大きな事故は起きません。
この記事では、移行方法の選び方から、事前準備・実作業・切り替え・移行後の確認まで、順を追って解説します。作業チェックリストも用意しました。

状況によって適切な方法が変わります。まずここを決めてから作業に入ります。
| 方法 | 向いている状況 | 難易度 |
|---|---|---|
| サーバーの移行ツール | 同一サービス内・主要レンタルサーバー | 低 |
| 移行プラグイン | 小〜中規模サイト(〜数GB) | 低〜中 |
| 手動移行 | 大規模・特殊な構成・確実性重視 | 中〜高 |
エックスサーバーやConoHaなど主要なレンタルサーバーにはWordPress簡単移行のような機能があります。対応していれば、これが最も速く確実です。
プラグインでは All-in-One WP Migration や Duplicator が定番です。ただし無料版にはファイルサイズの上限があるため、画像の多いサイトでは途中で止まることがあります。
手動移行は手間がかかりますが、途中で何が起きているかを完全に把握できます。大規模サイトや、プラグインが失敗した場合の最終手段です。

何よりも先にこれをやります。移行が失敗しても元に戻せる状態を作ってから着手してください。
wp-content(テーマ・プラグイン・アップロード画像)を含む全ファイルwp-config.phpのDB接続情報、DNSの現在の設定# WP-CLIが使える環境なら、この2行でバックアップが取れる
wp db export backup-$(date +%Y%m%d).sql
tar -czf files-$(date +%Y%m%d).tar.gz wp-content wp-config.php
# 取得したファイルの中身とサイズを確認しておく
ls -lh backup-*.sql files-*.tar.gzバックアップは自分のPCにダウンロードするまで完了とはいえません。同じサーバー上に置いたままでは、サーバー側の障害で同時に失われます。

最も使われる方法です。All-in-One WP Migration を例に流れを示します。
【旧サーバー】
1. プラグインをインストール・有効化
2. エクスポート → 「ファイル」を選択
3. .wpress ファイルをダウンロード(数分〜数十分)
【新サーバー】
4. WordPressを新規インストール(バージョンを合わせる)
5. 同じプラグインをインストール・有効化
6. インポート → ダウンロードした .wpress を選択
7. 完了後、パーマリンク設定を2回保存(後述)インポート後は管理画面のログイン情報が旧サイトのものに置き換わります。新規インストール時に設定したパスワードではなく、旧サイトのID・パスワードでログインしてください。
<?php
// .htaccess や php.ini で上限を引き上げる(サーバーが許可している場合)
// php.ini の例
upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 600
memory_limit = 256M引き上げられない場合は、画像フォルダだけを手動でFTP転送し、残りをプラグインで移すという分割が有効です。wp-content/uploadsを除外してエクスポートできるプラグインもあります。

確実性が最も高い方法です。ファイルとデータベースを別々に運びます。
# 旧サーバーで圧縮してから転送すると速い
tar -czf site.tar.gz wp-content wp-config.php .htaccess
# 新サーバーで展開
tar -xzf site.tar.gz# 旧サーバーでエクスポート
wp db export old-site.sql
# または phpMyAdmin → エクスポート → 形式:SQL
# 新サーバーでインポート
wp db import old-site.sql
# または phpMyAdmin → インポート<?php
/** 新サーバーのデータベース情報に差し替える */
define( 'DB_NAME', '新しいDB名' );
define( 'DB_USER', '新しいDBユーザー' );
define( 'DB_PASSWORD', '新しいパスワード' );
define( 'DB_HOST', 'localhost' ); // サーバーによって異なる
/** 移行中の確認用にデバッグを一時的に有効化してもよい */
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', true );DB_HOSTはサーバーによってlocalhostではないことがあります。契約情報を確認して正確に入れてください。ここを間違えると「データベース接続確立エラー」になります。

ドメインが変わる場合の最重要工程です。ここを雑にやると、画像が表示されない・リンクが旧ドメインを向くといった不具合が残ります。
# WP-CLIなら1コマンドで安全に置換できる(シリアライズ対応)
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables --dry-run
# 問題なければ --dry-run を外して実行
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tablesSQLのREPLACEで一括置換するのは避けてください。WordPressはウィジェットやテーマ設定を「シリアライズ」という形式で保存しており、単純な文字列置換では文字数の情報がずれてデータが壊れます。
| 方法 | シリアライズ対応 | 推奨度 |
|---|---|---|
WP-CLI search-replace | 対応 | 最も安全 |
| Better Search Replace(プラグイン) | 対応 | GUIで使える |
| phpMyAdminでSQLのREPLACE | 非対応 | 設定が壊れる |
| 手作業で1件ずつ修正 | — | 漏れが出る |
置換対象は本文だけではありません。設定値・カスタムフィールド・ウィジェット・テーマオプションにもURLが入っています。必ず--all-tablesで全体を対象にしてください。

移行事故の多くはここで起きます。DNSを切り替えてから確認すると、問題があった場合に本番が壊れた状態で公開されます。
正しい順序は「新サーバーで表示確認 → 問題なければDNS切り替え」です。切り替え前に確認するには、PCのhostsファイルを使います。
# macOS: /etc/hosts / Windows: C:\Windows\System32\drivers\etc\hosts
# 新サーバーのIPアドレスとドメインを書く
203.0.113.10 example.com
203.0.113.10 www.example.com# 編集後にDNSキャッシュを消す(macOS)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# 自分だけ新サーバーを見ている状態か確認
ping example.comこの状態なら、自分のPCだけが新サーバーを見ているため、一般の閲覧者には影響がありません。表示・リンク・フォーム送信まで確認してから、DNSを切り替えます。
確認が終わったらhostsの記述は必ず削除してください。消し忘れると、切り替え後にキャッシュの問題を追いかけることになります。
DNSを切り替えたら、SSLとリダイレクトを整えます。この2つが抜けると、警告表示や重複コンテンツの原因になります。
https://で表示されるか確認する# httpsへ統一
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# 旧ドメインから新ドメインへ(ドメイン変更時・旧サーバー側に置く)
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]ドメインを変更した場合、旧ドメインからの301リダイレクトは最低1年は維持してください。検索エンジンの評価を引き継ぐために必要です。
表示されたから完了、ではありません。次の10項目を確認してください。
| 確認項目 | 見るところ | 問題があれば |
|---|---|---|
| トップページ表示 | レイアウト崩れがないか | CSSのURLを確認 |
| 記事の個別ページ | 404にならないか | パーマリンクを再保存 |
| 画像表示 | 旧ドメインを向いていないか | URL置換をやり直す |
| 問い合わせフォーム | 実際に送信テスト | メール設定を確認 |
| 管理画面 | ログインできるか | 旧サイトの認証情報を使う |
| プラグイン | エラーが出ていないか | 1つずつ有効化して切り分け |
| SSL | 鍵マークが出るか | 証明書と混在コンテンツ |
| リダイレクト | 旧URLが新URLへ飛ぶか | .htaccessを確認 |
| 検索インデックス | noindexが残っていないか | 設定→表示設定 |
| 解析タグ | 計測が続いているか | GA4のリアルタイムで確認 |
特に見落とされやすいのが9番目です。テスト環境で検索エンジンによるインデックスを許可しないにチェックを入れたまま本番移行すると、サイト全体が検索結果から消えます。

移行作業で遭遇する代表的な症状と、その原因です。
| 症状 | 原因 | 対処 |
|---|---|---|
| データベース接続確立エラー | DB情報の誤り | wp-config.phpの4項目を確認 |
| トップは出るが記事が404 | リライトルール未生成 | 設定→パーマリンクを保存 |
| 画像だけ表示されない | URL置換漏れ | search-replaceを再実行 |
| 管理画面が真っ白 | プラグインの不整合 | FTPでplugins名を変更し無効化 |
| リダイレクトループ | SSL設定の重複 | .htaccessとプラグインを整理 |
| ログインできない | 新規側の認証情報を使用 | 旧サイトのID・パスワード |
| 文字化け | DBの文字コード不一致 | utf8mb4で再インポート |
2番目は移行後にほぼ必ず起きます。「設定 → パーマリンク設定」を開いて何も変更せずに保存するだけで直ります。覚えておくと慌てません。
印刷して手元に置ける形でまとめました。上から順に潰していけば完了します。
【事前】
[ ] ファイル一式のバックアップをローカルに保存
[ ] データベースのエクスポートをローカルに保存
[ ] 有効なプラグイン一覧を記録
[ ] 主要ページのスクリーンショットを保存
[ ] 新サーバーのDB情報・IPアドレスを控える
【移行】
[ ] 新サーバーにファイルを配置
[ ] データベースをインポート
[ ] wp-config.php のDB情報を書き換え
[ ] URLを search-replace で置換(--all-tables)
【確認(DNS切替前)】
[ ] hosts に新サーバーのIPを書いて表示確認
[ ] トップ・記事・固定ページを開く
[ ] 画像とCSSが新ドメインを向いているか
[ ] フォーム送信テスト
[ ] hosts の記述を削除
【切替】
[ ] DNSを新サーバーへ変更
[ ] 反映を待つ(数分〜48時間)
[ ] SSL証明書を発行・確認
[ ] リダイレクト設定
【事後】
[ ] パーマリンク設定を保存し直す
[ ] noindex設定が入っていないか確認
[ ] 解析タグの計測を確認
[ ] 旧サーバーは1ヶ月ほど残しておく最後の項目が地味に重要です。移行直後は気づかない不具合が出ることがあるため、旧サーバーは即解約しないでください。1ヶ月ほど残しておけば、いつでも切り戻せます。
本番の移行だけでなく、検証用のコピーを作るときも同じ手順が使えます。ただし2点だけ追加の配慮が要ります。
管理画面 → 設定 → 表示設定
→ 「検索エンジンがサイトをインデックスしないようにする」にチェックテスト環境が検索結果に出ると、本番と重複コンテンツになります。あわせてBasic認証をかけておくと、URLが漏れても閲覧されません。
AuthType Basic
AuthName "Staging"
AuthUserFile /path/to/.htpasswd
Require valid-userテスト環境から実際の顧客にメールが飛ぶ事故を防ぎます。問い合わせフォームの通知や、自動返信が該当します。
<?php
/** テスト環境ではメール送信を無効化する */
if ( strpos( $_SERVER['HTTP_HOST'] ?? '', 'staging.' ) === 0 ) {
define( 'WP_ENVIRONMENT_TYPE', 'staging' );
}<?php
// staging判定時はメール送信をキャンセルする
add_filter( 'pre_wp_mail', function ( $null ) {
if ( wp_get_environment_type() === 'staging' ) {
return true; // 送信せず成功扱いにする
}
return $null;
}, 10, 1 );本番へ戻すときにこの記述を消し忘れないよう、環境判定で自動的に切り替わる形にしておくのが安全です。
サーバーだけの移行ならURLは変わりませんが、ドメインも変える場合は検索評価の引き継ぎ作業が加わります。
# 個別ページも含めて1対1で転送する(トップへまとめない)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]よくある失敗が全URLをトップページへ転送してしまうことです。個別記事の評価が引き継がれず、検索流入が大きく落ちます。必ずパスを保ったまま転送してください。
| 作業 | タイミング | 維持期間 |
|---|---|---|
| 301リダイレクト | DNS切替と同時 | 最低1年 |
| Search Console申請 | 切替の翌日まで | — |
| サイトマップ送信 | 切替後すぐ | — |
| 内部リンク置換 | 移行作業中 | — |
| 順位の監視 | 切替後1〜3ヶ月 | 毎週確認 |
順位は一時的に下がることがあります。1〜3ヶ月かけて戻るのが一般的なので、直後の変動で慌てて設定を変えないでください。
画像が数GBある、記事が数千本あるといったサイトでは、一括移行が時間切れで失敗します。分割して運びます。
# 1. 画像以外を先に移す
tar -czf core.tar.gz --exclude='wp-content/uploads' wp-content wp-config.php
# 2. 画像は年別に分けて転送する
tar -czf uploads-2024.tar.gz wp-content/uploads/2024
tar -czf uploads-2025.tar.gz wp-content/uploads/2025
tar -czf uploads-2026.tar.gz wp-content/uploads/2026
# 3. rsyncが使えるなら差分転送が最も速い
rsync -avz --progress wp-content/uploads/ user@new-server:/path/wp-content/uploads/rsyncが使えるなら最優先で検討してください。途中で止まっても差分から再開できるため、大量ファイルの転送で最も確実です。
# 不要データを削除してからエクスポートすると軽くなる
wp post delete $(wp post list --post_status=trash --format=ids) --force
wp transient delete --all
wp db optimize
# それでも大きい場合はテーブル単位でエクスポート
wp db export --tables=wp_posts,wp_postmeta posts.sqlリビジョンと期限切れtransientの削除だけで、データベースが半分以下になることも珍しくありません。移行前の掃除は、そのまま移行後の表示速度改善にもつながります。
移行を決めたら、次はどこへ移すかといつ実施するかです。ここを外すと、移行そのものが無駄になります。
| 確認項目 | 見るポイント | なぜ重要か |
|---|---|---|
| PHPのバージョン | 8.1以上に対応しているか | 古いと将来動かなくなる |
| ストレージ | SSD/NVMe か | 表示速度に直結する |
| 転送量の上限 | 月間の制限と超過時の扱い | アクセス増で止まる恐れ |
| バックアップ | 自動取得と復元の可否 | 事故時の復旧手段 |
| 無料SSL | Let’s Encrypt対応 | 証明書の維持コスト |
| 移行ツール | 簡単移行機能の有無 | 作業時間が大きく変わる |
| サポート | 日本語・電話対応 | トラブル時の速度 |
見落としやすいのが転送量です。画像の多いメディアサイトでは、記事数よりも画像の総容量が効いてきます。現在の月間転送量を管理画面で確認してから選んでください。
WithMediaのような学習系メディアでは、土日の早朝がアクセスの谷になります。自サイトの日別・時間帯別のアクセスを見て決めるのが確実です。
移行日が決まったら、記事の更新担当や広告運用の担当に事前共有します。移行中に記事を更新すると、その内容が新サーバーに引き継がれず消えます。
【サーバー移行のお知らせ】
日時:2026年9月2日(火)6:00〜9:00
影響:この時間帯は記事の更新を停止してください
閲覧は継続できます(表示が新旧どちらかになります)
反映完了:9月4日(木)を目処
連絡先:担当者名・連絡手段この更新停止のお願いが抜けると、移行後に「書いたはずの記事が無い」という事故が起きます。作業前後の30分ずつを含めて、余裕を持った時間で伝えてください。
WordPressの移行は「バックアップ → ファイルとDBを運ぶ → URLを置換 → 新サーバーで確認 → DNS切り替え」の順で進めます。最大の注意点は2つで、1つはDNSを切り替える前にhostsファイルで表示確認をすること、もう1つはURL置換にWP-CLIのsearch-replaceかBetter Search Replaceを使うことです。SQLの単純置換はシリアライズされた設定を壊します。移行後はパーマリンク設定を保存し直し、noindexが残っていないかを必ず確認してください。旧サーバーは1ヶ月ほど残しておけば、問題があってもすぐ切り戻せます。
小規模サイトなら作業自体は1〜2時間程度です。ただしDNSの切り替えが世界中に反映されるまで最大48時間かかるため、全体では2〜3日を見ておくと安全です。アクセスの少ない時間帯に作業し、切り替え後しばらくは表示を監視してください。
正しい手順なら、ほぼ停止時間なしで移行できます。旧サーバーを稼働させたまま新サーバーを構築し、hostsファイルで確認してからDNSを切り替えるためです。DNSの反映中は、閲覧者によって新旧どちらかのサーバーが表示されます。この間は記事の更新を止めてください。
WordPressはウィジェットやテーマ設定を「シリアライズ」という文字数情報を含む形式で保存しています。単純な文字列置換をすると文字数の記録と実際の長さがずれ、設定が読み込めなくなります。WP-CLIのsearch-replaceやBetter Search Replaceはこの形式に対応しています。
リライトルールが再生成されていないためです。管理画面の「設定 → パーマリンク設定」を開き、何も変更せずに「変更を保存」を押してください。ほとんどの場合これで解決します。直らない場合は.htaccessが正しく転送されているか確認してください。
移行完了から1ヶ月ほど空けることを推奨します。移行直後には気づかない不具合が後から見つかることがあり、旧サーバーが残っていればすぐ切り戻せます。ドメインを変更した場合は、301リダイレクトを維持するために最低1年は旧環境を残してください。

目的に合わせて選べる「AI副業」「AI転職」「AI活用」の3コースを用意。副収入・キャリアチェンジ・日常の生産性アップまで、あなたのゴールに合わせてAIを学べます。
会員登録はカンタン30秒で完了します。まずは公式LINEから、無料でAI学習をスタートしましょう!
WithCodeでWeb制作を習得後、フリーランスエンジニアとして活動。HTML/CSS・JavaScript・WordPress案件を中心に年間20件以上の制作実績を持つ。「難しい技術をわかりやすく」をモットーに、初心者〜中級者向けの技術記事を執筆。副業・フリーランス独立を目指す方に向けた情報発信に注力している。
公式サイト より
今すぐ
無料カウンセリング
を予約!