更新しなくなったWPサイトをStaticPressで静的サイト化して別ドメインに移行
更新しなくなったサイトがあり、既存コンテンツのニーズはあるので公開はしておきたいけど、WordPressの保守も大変だから静的サイト化するという案件です。ドメインも、別で使っているドメインのサブドメインに移したいとのことで、WordPressサイトを静的HTMLに変換+ドメイン変更をやりました。作業メモです。
サブドメインを取得
レンサバの管理画面からポチポチと設定します。反映に半日くらいかかった。 サブドメイン設定 | レンタルサーバー【エックスサーバー】
ローカルにコピー
作業用の開発環境をローカルにコピーします。Local by FlyWheelを使っています。
WPサイトのローカルへのコピーで出たエラー
トップページが本番サーバーにリダイレクトされる(下層は問題ない)。
→他のブラウザやシークレットモードでは正常に表示され、キャッシュの問題だと思うので無視。
なぜか旧本番環境の、しかも参照していないはずのphpファイル内の関数エラーが出る
→googleアドセンスのコードから謎に旧サイトのファイルが呼び出されていた。良く分からないのでアドセンスの広告ユニットを作り直して貼りなおしたら問題なく表示された。
SSL化
非SSLだったのでついでにSSL化。Really Simple SSLを使ったが、問題が出たためWP-CLIでやり直しました(後述)。
StaticPressで静的HTML化
静的サイト化プラグインはいくつかありましたが、一番ネット上に情報が多そうだったのでStaticPressを選びました。 StaticPress
エラー・不具合
home_urlで出力していたURLが出力されない
→分からないけど1か所しかなかったのでテーマにハードコーディングしたった。
フェッチ以降進まない
静的化→WP側で修正→静的化を何回かやるなかで、ある時点から「フェッチ開始」以降進まなくなってしまった。
以下に沿ってプラグインを編集して解決。 StaticPressで再構築ボタンを押した際に処理中のまま止まってしまう場合の対処方法 | Blogenist – ブロゲニスト
sitemapが出力されない
よく見たら出力されていなかった
こちらも以下に沿ってプラグインを編集して解決。 【StaticPress】sitemap関連のファイルが出力されない場合の対処方法 | Blogenist – ブロゲニスト
上記2点は既にプルリクが送られているがマージされてない模様。 Pull Requests · megumiteam/staticpress · GitHub
SSL化した後htmlファイルが出力されない
→上述のReally Simple SSLプラグインを使ったところ、出力しなくなってしまった。いろいろ検証したところ、DBの置換にWP-CLIを使ってオプションでGUIDを除外したら問題なく出力されました。
StaticPressが内部でどういう処理をしているのか詳しくは調べていませんが、このへんの絡みではないかと思われます。コマンドも記事内のものを参照ください。 WordPress のドメイン名やURLを変える際の GUID 問題のちゃんとした話 – Capital P
リダイレクト
用意したサブドメインに、旧ドメインからリダイレクトをかけます。
管理画面のアクセスを残す処理(あとあと何かやること発生するかもしれないし、念のため)を含め、.htaccessで301リダイレクト。
これでいけた↓
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php
RewriteCond %{REQUEST_URI} !^(.*)?wp-admin
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
</ifModule>
Googleアナリティクス・サーチコンソール
ドメインが変わったため、Googleアナリティクスとサーチコンソールもそれぞれ設定しなおします。
Googleアナリティクスの対応
「管理」→「プロパティを作成」から新しくプロパティを追加しました。これはトラッキングコードが新しく生成されるので、静的ファイルの出力前にやっておくべきだった。設置して再度出力しなおすハメに。
Search Consoleのアドレス変更
以下を参照しつつ書いてある手順通りにやったらいけました。
概要: URL の変更を伴うサイト移転 – Search Console ヘルプ アドレス変更ツールの使用 – Search Console ヘルプ