東京わき見散歩地図をドメイン変更して常時SSL対応しました。
ドメインは別段変更したくなかったのですが、これまで同サイトが設置してあるさくらインターネットの無料サブドメインを利用していて、これが常時SSL化できなかったのです。仕方ないので、これを機会に新規ドメインを取得することにしました。
つまり、
①ドメイン変更
②常時SSL化
という二つのステップがある訳で、少し考えて次のような対応をすることにしました。
①当然ながら、総べてのデータをエクスポートしてバックアップ
②取得した新規ドメインを、旧サイトと同じディレクトリに設定する
③同ドメインにSSL証明書をインストール
(以上でとりあえず、新規ドメインでサイトが一応表示される状態になります。パスの関係などで一部画像などがうまく表示されていないことはあります)
④WordPressの管理画面で「WordPress アドレス (URL)」と「サイトアドレス (URL)」を新規ドメインに変更。この際、httpsにはせずhttpで入力する。(サイト URL の変更 – WordPress Codex 日本語版参照。但し、このページにずらずらと書かれているのは上の方法ですっきり行かなかった場合の手動対応なので、問題なければ上の二つを変更するだけで大丈夫です)
⑤【WordPress】常時SSL化プラグインの使い方 – さくらのサポート情報を参考に、さくらインターネットのWordpress常時SSL化プラグインをインストール、有効化、実行。SSLで問題なくアクセスしていることを確認
⑥同サイトはSimplicity2というテンプレートを使っていますが、このテンプレートにはカスタマイズ>一般に「内部URLをSSL対応」という項目があるので、これをチェック。但し、ざっと確認した限りではこれをチェックしないでもエラー等は出ていなかったのですが、やらないと上手くいかないこともあります(後から考えると、この段階では旧サイトのURLを見ている箇所がたくさんあって、単に次の項目で設定した旧ドメインからのリダイレクトで上手く表示されていただけのようにも思う。ごめんなさい、ちゃんとチェックしてません)
⑦旧ドメインを別ディレクトリに設定し直す(例えばtokyoをtokyo_oldに)
⑧旧ドメインを設定した方のディレクトリに、リダイレクト用.htaccessを設置。例えば以下のように(利用される場合、ドメイン名等はお持ちのサイトにあわせて変更してください)
RewriteEngine On
RewriteCond %{http_host} ^tokyo.rdy.jp
RewriteRule ^(.*) https://tokyo-sampo.com/$1 [R=301,L]
以上で旧ドメインから新ドメインへのリダイレクトができ、かつ新ドメインにhttpでアクセスした場合は、プラグインが書き換えてくれた.htaccessでhttpsにリダイレクトされるはず!(しかし後述のプラグインのせいなどで新ドメインの.htaccessは上手く生成できていなかった模様)
⑨記事内のリンクなどが旧ドメインのままになっている可能性があるため、プラグイン「Search Regex」をインストール、有効化。ツール>Search Regexで旧ドメインをSearch patternに入力しSearch。該当箇所が表示される場合(多分されます)、Replace patternに新ドメインを入力しReplace & Save。SQLがわかるならDBを直接触ることもできますが、プラグインでやった方が圧倒的に安全です。
と、想像以上にすんなりできてしまって拍子抜けでした!と言いたいところですが、indexやアーカイブページは正常表示されているのに、個別ページではcssのパスがhttpで吐かれていて「保護されています」状態になりません。simplicity関連のcssなので、simplicity自体の機能のものがSSL化されてないとも考えにくく、うーんと詰まってしまいました。
wp_optionsを旧ドメインおよび新ドメインの//から始まるURLで曖昧検索してみると、一箇所変更されていないところがあり修正したのですが、改善せず(json文字列で保存されていることが多いため、文字列自体と同時に、バイト数を示す数値を変更することを忘れずに!)
ためしに子テーマでない方のSimpliciy2自体を再インストールしてみますが改善せず(Simplicity2は本体ではなく子テーマをいじる設計になっているので、本体は再インストールしても問題ない)。そもそもDBではなくファイルの方にパスやらURLが書いてある、というのも考えにくいです。
この辺りで参考にしたのは以下など。
Simplicityの「簡単SSL対応」機能を用いてサイトをSSL化する方法
WordPressをhttpからhttpsにSSL化した全手順まとめ(エックスサーバー環境)
そうしているうちに、以下の情報を見つけました。
さくらのレンタルサーバでHTTPS(SNI SSL)な独自ドメインのWordpressサイトを構築する際の注意点 – Qiita
さくらインターネットは仕様がトリッキーで問題多いんですよね。
上のサイトに記述のある通り、.htaccessとwp-config.phpを修正したのですが、その過程でW3 Total Cacheが書いた跡があちこちに残っていることを見つけました。既にW3 Total Cacheは無効化しアンインストールしているのですが、.htaccessの記述が残っているばかりか、wp-config.phpでもonのままになっています。なんということでしょう!
これらを削除し、上のページにある通りリダイレクトおよび$_SERVERと$_ENVの書き換えを追加してみたところ、ようやく正常表示されるようになりました。
個別ページのみ異常だったところから考えても、キャッシュ関連が邪魔していたようです。
キャッシュ系のプラグインは軽量化の為に有効ではありますが、色々トラブルの元になりますし、あまり使わない方が吉だと思います。一旦入れると停止しても変な影響が残る場合があるようです。