このブログは初めからSSLで作ったので問題なかったのですが、以前から運営しているいくつかのサイトはSSL未対応のままでした。
そこで先週重い腰をあげてようやくWordPresssで作っているサイトのhttps化(常時SSL化)を試みましたところ、些細なことでつまずいてしまったので備忘録に書いておきます。
SSL化について書かれているブログをいくつか拝見したのですが、WPテーマ「simplicity」の作者わいひらさん「WordPressをhttpからhttpsにSSL化した全手順まとめ(エックスサーバー環境)」が最も分かりやすかったのでそちらを参考にさせていただきました。
わいひらさん、誠に有り難うございます。
エックスサーバーならSSLは無料
サイトのSSLについてはレンタルサーバーごとに対応が異なりますが、エックスサーバーは無料オプションで利用できます。SSL導入については別途費用が必要だと思っていたので助かります。
ちなみにエックスサーバーは4月10日まで初期費用半額キャンペーン中ですので、サーバー移転や新規契約で悩まれている方は是非どうぞ。
エックスサーバー管理画面からSSLを追加
管理画面からを「SSL設定」を選択。
サイトを選択して「独自SSLの追加」。[CSR情報(SSL証明書申請情報)を入力する]は未チェックでOKです。
最大1時間、体感的には20分ほどでhttps〜ではじまるサイトURLが作成されます。
サイト内URLをhttpsに一括変換
https〜にアクセスしてサイトが表示されるようになったら次のステップに進みます。
表示前にやってしまうと現在表示されている画像ファイルが非表示に、内部リンクが全て404になってしまいますので焦らずに。
https化されるのはあくまでページURLだけですので、サイト内リンクのaタグやimgタグのURLはhttpのままです。
わいひらさんの記事に従い、サイト内URLを一括で置き換えてくれるプラグイン”search regex”を使用し、httpのURLをhttpsに書き換えます。
[Search patern]にhttpからはじまるURL(https://■■■.com)。[Replace pattern]にhttpsからはじまるURLを記入して[Replace]をクリック。
すると置き換え後のURLが表示されるので間違っていないかチェック。
問題なければ[Repalece & Save]で保存します。
こちら記事にも書かれていましたが、置き換え保存の前に念入りに確認しておきましょう。間違っていると後が面倒です。
旧URLから新URLに301リダイレクト
SSL化により今までのページが無くなるのではなく、httpから始まるサイトとhttpsで始まるサイト2つが共存していることになります。
そこでftpソフトを使い.htaccessを編集し、httpにアクセスされてもhttps に転送されるよう301リダイレクトを設定します。
# .htaccessの最上部に下記をコピペ
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
転送させるのならエックスサーバーの管理画面から簡単に設定できるじゃないかと思われそうですが、私のサイトで試してみたところURLループになってしまいサイトが表示されなくなってしまいました。
サイト設定によってループしない場合もありますが、仮に設定が間違っていても慌てないで済むようにftpで接続し、きちんとバックアップをとった上で、.htaccessファイルで301リダイレクトを設定した方が無難です。
https化で起きた些細なトラブル
ここまでの設定が全て終われば完全にhttps化されているはずですので、実際にアクセスして確認してみます。
下図のようにブラウザのURLバーに緑色の鍵マークが表示されていれば成功です。(私の使用しているブラウザはFirefoxですが、他のブラウザでも同じような表示です)
ところが、、おや?
F12キーを押しコンソールを確認してみると、「安全なページ上で (安全でない) 混在表示コンテンツ “https://▲▲▲.jpg” を読み込んでいます」と通知が。
ウィジェットに書き込んだコードが変換されていない
ざっと確認してみるとサイドバーやフッターエリアなどに追加したウィジェット内のURLがhttpsに変換されていないようです。
テキストエディタなどでhttp をhttpsに一括置き換えし再度確認。
しかし、、、
CSSで設定した背景画像のURLも変換されていない
CSSでhタグの背景などに設定していた画像ファイルのURLも未変換でした。こちらも同様にテキストエディタで一括置き換えし再々確認。
が・・!
カスタマイザーで設定したヘッダー背景画像
simplicityのカスタマイザー画面で設定した背景画像がどうも引っかかっているようです。
現在設定している画像をいったん削除し、改めて同じ画像を選択。
メディアファイル自体はserach regexでhttpsに変換されていますから同じファイルを選択しても問題ないはずです。
そしてようやく完了。
Search Consoleに新URLを追加
httpサイトがhttpsサイトに変わったわけではなく別サイトとして生成されたわけですので、コピーサイトと勘違いされない為にもsearch consoleにhttpsではじまるURLを新たに登録します。
以前サイトの確認タグなどを使用していればほとんど手間なく登録できるはずです。
これにてやっと終了。
トラブルも含め1時間半ほどで終わりました。