| この記事の要点 |
|
WordPress 引越しの全体像
WordPress を別サーバ・別ドメインに引越すには、大きく分けて 3 つの要素を新環境に移します。どれか 1 つでも漏れるとサイトが正常に動きません。
| 要素 | 内容 | 移行手段 |
|---|---|---|
| ① ファイル一式 | WordPress 本体 + テーマ + プラグイン + アップロード画像 | FTP / SFTP / rsync / zip |
| ② データベース | 記事・コメント・設定・ユーザー情報 | phpMyAdmin / mysqldump |
| ③ 設定書き換え | DB 接続情報・サイト URL | wp-config.php / wp_options / WP-CLI |
事前準備
- 引越し先サーバに WordPress を動かせる環境(PHP / MySQL or MariaDB)があること
- 引越し先に新しいデータベースとユーザーを作成しておく(データベースの作成 / ユーザーの作成)
- バックアップを取る(プログラム・データベース両方)
- 引越し直前は本番側で投稿・コメントを止める(メンテナンスモード)
※本番のファイル・データを削除する作業は行わないでください。常に「コピー」で作業し、切替後しばらく旧環境を残します。
STEP 1: ファイル一式を引越し先にコピー
WordPress の設置ディレクトリ(wp-content 含む)をまるごと引越し先にコピーします。SSH が使えるなら rsync が高速です。
# 旧環境で zip 圧縮
cd /var/www/old
tar czf wp-files.tar.gz wordpress/
# 新環境に転送
scp wp-files.tar.gz user@newserver:/var/www/new/
# 新環境で展開
ssh user@newserver
cd /var/www/new
tar xzf wp-files.tar.gz
FTP 派なら、FileZilla 等でwp-content フォルダごと丸ごとダウンロード → 引越し先にアップロードします。wp-content/uploads は画像・PDF が大量にあると時間がかかるので、SFTP/rsync 推奨です。
STEP 2: データベースをエクスポート → インポート
引越し元から取得
phpMyAdmin が使えるなら GUI でエクスポート、SSH が使えるなら mysqldump が高速です(ターミナルからの実行方法は エクスポートおよびインポート を参照)。
# 旧環境
mysqldump -u olduser -p old_wp_db > old_wp.sql
# 新環境に転送
scp old_wp.sql user@newserver:/tmp/
引越し先にインポート
引越し先に新規 DB とユーザーを作ったうえで、エクスポートした SQL を流し込みます。
mysql -u newuser -p new_wp_db < /tmp/old_wp.sql
STEP 3: wp-config.php の修正
DB の接続情報が変わった場合は wp-config.php を書き換えます。
// wp-config.php
define( 'DB_NAME', 'new_wp_db' );
define( 'DB_USER', 'newuser' );
define( 'DB_PASSWORD', '****' );
define( 'DB_HOST', 'localhost' );
// セキュリティキーも環境ごとに変えるのが望ましい
// (ログインセッションが切れるが、安全)
STEP 4: サイト URL(siteurl / home)の書き換え
ドメインも変わる場合、wp_options テーブルの siteurl と home を新 URL に変更しないと、旧 URL にリダイレクトされる、CSS が読み込めないなどの不具合が発生します。
UPDATE wp_options
SET option_value = 'https://new.example.com'
WHERE option_name IN ('siteurl', 'home');
STEP 5: 本文中の URL をシリアライズ対応で置換
記事本文・ウィジェット・カスタマイザ設定など、あちこちに古い URL がハードコードされています。さらに WordPress の wp_options や postmeta にはシリアライズ済みの配列に URL が混ざっており、単純な UPDATE ... REPLACE で書き換えるとデータが壊れます。
専用ツールを使うのが安全です。
| ツール | 方法 |
|---|---|
| WP-CLI | wp search-replace 'https://old.example.com' 'https://new.example.com' --all-tables |
| Better Search Replace プラグイン | 管理画面から GUI で実行(Dry Run 可) |
| Search Replace DB(スクリプト) | PHP スクリプトを設置して GUI から実行 |
# WP-CLI で全テーブルを安全に書き換え(dry-run で事前確認)
wp search-replace 'https://old.example.com' 'https://new.example.com' --dry-run
wp search-replace 'https://old.example.com' 'https://new.example.com' --all-tables
STEP 6: 動作確認
DNS を切り替える前に、hosts ファイルで新サーバの IP に向けて動作確認するのが安全です。
# Windows: C:\Windows\System32\drivers\etc\hosts
# Mac/Linux: /etc/hosts
203.0.113.10 new.example.com
- トップページが表示されるか
- 固定ページ / 記事のパーマリンクが機能するか(だめなら管理画面で「設定 → パーマリンク」を保存し直す)
- 画像が表示されるか
- 管理画面にログインできるか
- お問い合わせフォーム等の送信動作
STEP 7: DNS 切替 + 旧環境の保持
動作確認が終わったら DNS の A レコード or CNAME を新サーバに向けます。TTL の伝播を考慮して少なくとも 1〜2 週間は旧サーバを残しておくのが鉄則です。絶対に旧サーバを即座に削除しないこと — キャッシュや古い DNS で旧サーバにアクセスしてくるユーザーがいるためです。
よくあるトラブル
| 症状 | 原因と対策 |
|---|---|
| 無限リダイレクト | siteurl / home が旧 URL のまま、もしくは HTTPS / HTTP の不一致 |
| 記事内画像が表示されない | 本文中の URL が旧ドメインのまま → search-replace で置換 |
| 固定ページが 404 | パーマリンク設定を再保存(.htaccess や Nginx 設定の再生成) |
| 管理画面に入れない | wp-config.php の認証キー設定ミス、または wp_options.siteurl の不整合 |
| テーマカスタマイズが消える | シリアライズ非対応の書き換えで壊れている可能性。バックアップから復旧 |
関連
- wp-config.phpの修正 — DB 接続情報の変更
- エクスポートおよびインポート — mysqldump の使い方
- データベースの作成
- ユーザーの作成
- MySQL/MariaDBへの接続
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15