WordPress(以下WP)のマルチサイトを別のサーバーに引っ越した時に、引っ越し先の管理画面で「サイトネットワーク管理」に繋がらなかった等のエラーに直面しました。
原因がわからず、本番環境でなかったのでこのままでいいかと数ヶ月放置していたのですが、昨日突然解決に至ったので、忘れないようにメモします。
マルチサイトとは
マルチサイトにすると、1つのWP(管理画面)で複数のWPサイトを運用することができます。
私が今回扱っているウェブサイトの例にあげると、1つのサーバー1つの管理画面で、アパレル会社の総合サイト・そのほかに2つのブランドサイトを運用しているものでした。
マルチサイト移行で手こずった
移行手順
- 移行元の作業(sample.com)
- DBのエクスポート(ダンプ)
- FTP経由でWPのファイルを全てローカルにダウンロード
- 移行先での作業(new.com)
- FTP経由で 1.2 のWPファイルをアップロード
- DBの接続先を移行先に変更(wp-config.php修正)
- 1.1 を移行先のDBにインポート
- DBのURLをsample.comからnew.com一括変更(Search Replace DB使用)
上記手順で普通のWPサイトならうまく移行できていたのですが、マルチサイトだとエラーが出ました。
エラー
下記のエラーが起こりました。
- サイトネットワーク管理のページに遷移できない
- 1は解決したが、総合サイトにリンクしてあったブランドサイト(子サイト)が見れない
サイトネットワーク管理のページに遷移できない
下のスクショの「サイトネットワーク管理」「ブランド1サイト」「ブランド2サイト」に遷移しようとすると
wp-admin/network/ なんてものはこのサーバーにないよ!というエラー。
Not Found The requested URL wp-admin/network/ was not found on this server.
解決
マルチサイトのドメイン設定を変更していなかったのが問題でした。
wp-config.phpのDOMAIN_CURRENT_SITEを移行先に変更します。
// 変更前 define('DOMAIN_CURRENT_SITE', 'sample.com'); // 変更後 define('DOMAIN_CURRENT_SITE', 'new.com');
これで無事、サイトネットワーク管理の画面に遷移することができました!
解決に至ったきっかけは、サイトネットワーク管理の遷移リンクがsample.com/wp-admin/network/になっていたからです。
URLもちゃんと見ておけばよかった・・・。
総合サイトにリンクしてあったブランドサイト(子サイト)が見れない
サイトネットワーク画面には遷移できましたが、
今度は総合サイトのトップページにリンクしてあったブランドサイトに遷移できませんでした。
- リンクからブランドサイトに遷移すると404ページになる(URL末尾にスラッシュなし)
- ブランドサイトの管理画面上部にエラー
- ちなみに、管理画面からはブランドサイトにアクセスができる(URL末尾にスラッシュあり)
2で表示されたエラー
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/themes/new/functions.php:3) in /var/www/html/wp-includes/pluggable.php on line 1219
解決
ファイルの上部に空白があったことが原因でした。
このエラー文は、すでにヘッダー情報が生成されていますよ、という意味らしい(よくわからん)。
エラーで指摘されているファイルを修正します。functions.phpの3行目。
headers already sent by (output started at /var/www/html/wp-content/themes/new/functions.php:3)
ファイルの1コード目である「class Sample {」の前の
1行目と3行目に空行があるのでそれを削除します。
// 修正前 1: 2: <?php 3: 4: class Sample { 5: public $array = array(); 6: ... // 修正後 1: <?php 2: class Sample { 3: public $array = array(); 4: ...
ちゃんとブランドサイトに遷移できました。
まとめ
今回は、マルチサイトの移行でエラーが不具合が発生しましたが、マルチサイトの設定を正しくすることとファイルの始まりの空行を消すことで解決することができました。
参考サイト
コメント