ショウジンブログ on Hatena

“お芝居をしないと、この社会では異邦人として扱われるほかない”

WordPressでhttpsプロトコル通信(独自SSL)を有効にする@WordPress

f:id:showjinx:20160719151659j:plain

WordPressでコーポレートサイト等を運用している場合は独自SSLを導入したらWordPressサイト全体も暗号化通信(httpsプロトコルによる)に対応したほうがいいと思いますが、たんにブログだけで利用しているような場合には必ずしも必要ではないかもしれません。

*Googleが暗号化通信に対応しているかどうかを検索順位の評価項目に追加しているという情報もあるので、そのへんの関係で必要な場合にはやはり対応したほうがいいでしょう。

最初からなら別ですが、途中からhttpsに切り替えるのは難しくないですが、けっこう手間がかかって面倒なので、そのへんを秤にかけて判断するとよいかと思ってます。

そして本題です。

WordPressを常時SSL対応にするのに必要なポイント

利用しているサーバーですでにSSL証明書を取得していることが前提です。

最近(2016年6月30日発表)、レンタルサーバーのXSERVERさんが無料で使える独自SSLサービスを始めました。手軽に導入出来るということでは大変ありがたい、便利だと思います。導入についても紹介しています。

blog.showzine.co

  • WordPressの設定変更
  • テーマのテンプレートを確認
  • .htaccess(Apacheの場合)によるリダイレクト処理
  • 既存の投稿・固定ページ内にあるサイト内リンクを変更
  • 外部ツールの設定変更(Google AnalyticsやSearch Console)
  • 外部サイト(SNS等)からのリンク変更

WordPressnの設定変更

管理画面に入り「設定>一般」にある

  • WordPress アドレス (URL)
  • サイトアドレス (URL)

のプロトコル(http)部分を「https」に変更して「変更を保存」します。

するといったんログアウト(強制的に)し、プロトコルが「https」になった状態で再度ログイン画面が表示されるので、ログインします。

私の場合、メールフォームにプラグイン「MW WP Form」を使用していて、入力画面、確認画面、完了画面を個別にURL設定しているので、これも「http」から「https」に変更しておきます。

f:id:showjinx:20160719151004p:plain

テーマのテンプレートを確認

WordPressのテンプレートタグを使っていれば「http」を含む絶対パスが記述されていることはないと思いますが(そのためのタグなので)Webデザイナー、制作会社さんが納品したものでも思いっきり絶対パスで記述してたりするので注意してください。

テンプレート内に絶対パスを使用している場合にはこの機会にテンプレートタグに変更します。

使用テーマへのテンプレートパスを出力するタグ

<?php echo get_template_directory_uri(); ?>

*固定ページ、投稿の本文内のパスは別扱いです。(後述)

.htaccess(Apacheの場合)によるリダイレクト処理

ここまでの作業で「http」プロトコルと「https」プロトコル、どちらでもアクセス出来る状態です。検索エンジンにとってはこの二つは「コンテンツが同じ」であっても別のサイトとして認識されます。

これはコンテンツの共食いになるので、リダイレクトの設定をして、URLの正規化をします。(wwwのありなしを統一するように)

この例ではWebサーバーはApacheですので、設定ファイル「.htaccess」を編集します。

以下の記述を追記します。

.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

これで、これまでの「http」から始まるURLでアクセスしても「https」にリダイレクトされます。(301=恒久的リダイレクト)

既存の投稿・固定ページ内にあるサイト内リンクを変更

テーマで使用するテンプレートとは別で、投稿、固定ページの本文内には投稿時のパスが絶対パスで記述(データベースに格納)されています。

これをひとつひとつ変更していくのは現実的ではないので、プラグインの力を拝借します。

f:id:showjinx:20160719151204p:plain

プラグイン「Search Regex」をインストールしたら有効化。

管理画面のツールメニューから「Search Regex」に進みます。

f:id:showjinx:20160719151225p:plain

置換対象を示す「Source」を「Post content」とし

  • Search pattern:http://ドメイン
  • Replace pattern:https://ドメイン

を入力したら画面下にある「Replace」をクリック。

置換の結果が「Results」として表示されます。この段階ではまだ置換は完了していないので、問題なければ先ほどの「Replace」ボタンの右にある「Replace & Save」ボタンをクリックして置換を確定します。

これで完了の場合もありますが、カスタムフィールドの値はメタ情報ですので「Post content」に含まれません。

ですので、カスタムフィールドを使っていて画像を登録等している場合には対象に「Post meta value」を指定し、同様の操作をして置換及び保存をします。

その他の変更

運用しているWordPressサイトの環境にもよりますが、ここまででおおよそは対応(独自SSL化)できているかと思います。

細かいところでは

  • 外部ツールの設定変更(Google AnalyticsやSearch Console)
  • 外部サイト(SNS等)からのリンク変更

がありますが、Google Analyticsでは管理画面で変更するだけです。対象サイトのプロパティ設定で「デフォルトのURL」をhttpsに変更して保存します。

Search Consoleは既存のhttpサイトと別に新規に追加します。(httpsサイトとして)

また、Google Analyticsの設定に戻りますが、対象サイトのプロパティのプロパティ設定から「Sarch Console > Search Console を調整」に進み、追加した(Search Consoleで)httpsサイトを追加して両者を関連づけておきます。

外部サイトからのリンクはそのためにリダイレクト処理(301=恒久的)しているので問題ないかと思います。

SNS等のソーシャルサービスにおけるシェア数はhttpsサイトへは引き継がれないので別途対応が必要です。(プラグイン「SNS Count Cache」で簡単にできるようですので、必要な場合は調べてください)