
昔のブログのバックアップがあるから、今のサーバーで動かしてみたいなぁ。
レガシー資産のマイグレーション
諸兄らにおかれては、バックアップという名の聖域をいかに保守されているだろうか。 昨日、筆者のローカル環境に眠っていた「旧ブログ」のアーカイブを、新サーバー(シンフリーサーバー)へと移管・再稼働させるミッションを遂行した 。
単なるファイルの転送に留まらない、PHP 8.3環境下での非互換性やリダイレクトループとの死闘を、スタックトレース風に記録する 。
移転フェーズ1:データベースのインポートと文字化けの懸念
まずは旧mixhost環境のDB(MySQL)を新環境 シンフリーサーバーのDB へマウントした 。

「テーブル接頭辞がデフォルトの wp_ ではなく wpky_ に変更されているな。wp-config.php の修正が必要だ。」
案の定、初期設定ではデータベース接続エラーが発生したため、wp-config.php をバイナリ修正(エディタ編集)し、接頭辞と認証情報を正しく紐付けた 。
移転フェーズ2:ERR_TOO_MANY_REDIRECTSとの遭遇
インポート完了後、ブラウザでアクセスを試みたところ、悪名高き無限ループ(リダイレクトループ)が発生した 。

ERR_TOO_MANY_REDIRECTS
これは、シンフリーサーバーのプロキシ環境がHTTPSを正しく認識できず、WordPress側が「まだHTTPだ」と誤認してリダイレクトを繰り返す、いわゆる「認識の不一致(Mismatch)」である 。

「プロキシからの HTTP_X_FORWARDED_PROTO ヘッダーを監視し、HTTPSが on であることを明示的に宣言するコードを wp-config.php に注入する。」
このパッチを適用した瞬間、ログイン画面のレンダリングに成功した 。
移転フェーズ3:PHP 8.3の高負荷とプラグインの排除
ログインはできたものの、今度は致命的なエラー(Fatal Error)がコンソールを埋め尽くした 。 原因は、新環境のランタイム(PHP 8.3.21)に対し、古いプラグインが非互換を示したことにある 。
- Invisible reCAPTCHA: PHP 8.3非対応につき、FTP経由で物理削除を実行 。
- SiteGuard: ログインURLの競合回避のため、こちらも一旦パージ 。

「依存関係の解消(クリーンアップ)完了。これでランタイムは安定した。」
仕上げ:Better Search ReplaceによるURLの正規化
最後に、記事内のハードコーディングされた旧ドメイン(旧ブログ.com)を新URLへと一括置換する 。

「Better Search Replace を起動。Run as dry run? で影響範囲を確認してから、一気に wpky_posts テーブルを書き換える。」
パーマリンク設定を再保存し、.htaccess が正常に生成されたことを確認して、全工程を「Exit Code: 0」で終了した 。
稼働継続(HTTP 200 OK)
移管後の「旧ブログ」は、現在以下のエンドポイントで正常にサーブされている。

今回の教訓は、**「環境が変われば、プロキシの設定一つでシステムは沈黙する」**ということだ。

コメント