さくらのレンタルサーバーで運営しているWordpressを、別のさくらのレンタルサーバーアカウントに移行した所、トップページと一部のシングルページは表示されたのですが、固定ページと一部のシングルページが全てトップページにリダイレクトされてしまいました。
かなり稀なケースかと思うのですが一応解決しましたのでやった事を記載します。
移行作業
作業内容としては既存のサイトは残したまま、新しいサーバーにWordpressをコピーし、新しいドメインと紐づけるというものでした。時期が来たら古いドメインから新しいドメインへリダイレクトを設定する予定です。
これならリスクもないし簡単だなと思っていたらすっかりハマる事に。
移行は下記の方法で行いました。
①独自ドメインを新しいサーバーへ登録
②既存のWordpressのファイルをFTPで全てローカルにダウンロード
③既存のWordpressのデータベースをphpMyAdminから全てエクスポート
④新しいサーバーへ②でダウンロードしたWordpressのファイルをFTPでアップロード
⑤新しいデータベースへ③でエクスポートしたファイルをインポート
⑥新しいデータベースのoptionsにある「siteurl」と「home」と「upload_url_path」を①で設定した独自ドメインのURLに変更
⑦④でアップロードしたWordpressのwp-config.phpのデータベースの情報を新しいデータベースに差し替え
上記の作業を行い新しいURLにアクセスした所、問題なく表示されたので終わった終わったと思ったのですがリンク先の確認をしたらトップページに戻されてしまいました。
トップページ以外がエラーになるのは良くある事なので、いつもの事かと思い管理画面からパーマリンクを更新したのですが改善されませんでした。
解決できた方法
色々と試したのですが、最終的な原因はhttpでアクセスした際にhttpsにリダイレクトするhtaccessの設定が原因でした。
▼今回の原因だった記述
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteRule ^(.*)$ https://〇〇〇独自ドメイン〇〇〇.co.jp/$1 [R=301,L] </IfModule>
▼上手くいった記述
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>
こちらのページを参考にしました。
htaccessを上記に変更後、ブラウザを何度か更新して固定ページへアクセスしてみたのですがやはりトップにリダイレクトされてしまい、別のブラウザで確認したところちゃんと表示されました。
上手くいかない場合キャッシュなどの可能性もありますので、ブラウザを変える、Chromeのシークレットモードでアクセスしてみるなどしてみる事をお勧めします。
また、上記が原因だったと思うのですが、インポート用のmysql内に記載されている古いドメインのURLを新しいドメインのURLへ全て置換、ファイルまでのサーバーのパスも新しいサーバーのものへ全て置換するという事もhtaccessの書き換え前に行いましたので、htaccessの書き換えだけで上手くいかない場合は試してみると良いかも知れません。
その他試して上手くいかなかった事
・パーマリンクを基本にすると直る。カスタムするとトップへリダイレクトされる
・まっさらなWordpressをインストールして、プラグインとテーマのみアップ
・プラグインを全部停止
・function.phpの中身を全部削除
・htaccessを全消し(キャッシュの問題で直らなかっただけで実は直っていた可能性有)
・新しいサーバーのphpのバージョンを既存のバージョンに合わせてダウングレード。mysqlは選択出来なかったため初期設定のまま
・ファイルのパーミッションが604だったので644へ変更。この時フォルダも644へ変更したらアクセスできなくなってびっくりしました。705に戻したら解決しました。
最後に
簡単に終わると思ってる作業が、何故か上手くいかずに時間がかかる事態におちいる事が経験上多くあります。終わってみるとちょっとした事が原因だったりするんですよね。今回もそんな感じでした。