ワードプレスのSSL(HTTPS)化の方法はウェブ上に多数ございますが、マルチサイトのSSL化の方法はあまりないようですのでクライアント様の依頼事例からマルチサイトのSSL化の手法をご紹介します。作業はワードプレスドクターで安全に代行可能ですのでご相談ください。
この記事の目次
WordPressのマルチサイトのSSL化を行う
ワードプレスは、一つのデータベースとフォルダ構造で、複数のサイトをサブドメインやサブディレクトリにて個別の管理画面を使用して管理することができるマルチサイトという機能がついています。
マルチサイトの詳しい内容は下記の記事を参照されてください。
参考記事
複数のWordPress(ワードプレス)を同時に動かすマルチサイト化のメリットと構築方法
マルチサイトのSSL化を行う
マルチサイトのSSL化を行う際は、まずお使いのドメインがSSLの証明書のご契約を済ませている必要がございます。Xserver,Sakuraインターネット、Lolipop者などはボタンを押すだけでSSL証明書を無料で発行する機能を提供しています。
XserverのSSL証明書の取得方法
SakuraインターネットのSSL証明書の取得方法
LolipopのSSL証明書の取得方法
SSL化の際のwp-config.phpの設定追加
次に、ワードプレスのwp-config.phpという設定ファイルにリダイレクトループというHTTPとHTTPSが循環してしまいサイトが表示されなくなるのを防ぐための設定を書き込んでおく方が安全です。
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */ という記載があるところの下に下記のように記載します。
$_SERVER['HTTPS'] = 'on'; $_ENV['HTTPS'] = 'on'; define('FORCE_SSL_ADMIN', true);
データベースのURL設定をSSL化する
既にマルチサイトがHTTPで作成されている場合、データベースのURL設定を書き換える必要がございます。
ワードプレスのマルチサイトのURL設定がHTTPになっているかどうかお確かめください。ネットワークの管理画面>サイト>すべてのサイト>編集 より確認できます。
マルチサイトの場合、管理画面からこちらをHTTPSに変更することができませんので、すべてのマルチサイトのデータベースのURL設定のHTTP設定を変更する必要があります。この設定は一般的にwp_optionsというテーブルのsiteurl、homeという欄に書き込まれています。
マルチサイトでは子サイトのテーブル名は、wp_2options等数字が付与されてデータベースに存在するかと思いますので、こちらのサイトURL設定も全て書き換える必要があります。
もし、すでに長く運用されているサイト様ですと、内部リンクがHTTPになっているため、こちらも全てHTTPS対応にデータベースを書き換える必要がございます。一括でデータベースのURLを置き換えてくれるソフトとしてSearch Replace DBというプログラムがあります。こちらを利用されるのもよいかと思います。
プログラムの入手
Search Replace DB
Search Replace DBによってドメインの書き換え方法
WordPress サイトの ドメイン変更の際のデータベースのドメイン名置き換え(書き換え)作業
テーマファイルのHTTPをHTTPSに書き換える
もしテーマファイル内にHTTPでCSSやJavascript等のファイルを読み込んでいる場合、混在コンテンツ(サイト自体がHTTPSなのに、HTTPで一部コンテンツを読み込んでいる状態)となってしまい、ブラウザによってはサイトの暗号化の安全性の為それらのファイルを読み込まない現象が発生することがあります。この場合、レイアウトが崩れたりサイトの機能の一部が使用不可となるなどの弊害が発生します。
wp-contents/themes/お使いのテーマ名 のフォルダをFTPなどでダウンロードしてHTTP文字列を一括置換します。
一括置換するソフトウェアには、Notepad ++というソフトウェアがございます。
HTTPからHTTPSへリダイレクトする
最後に、ユーザーがアクセスしてきたときにもしHTTPだったらHTTPSにリダイレクトして強制的にURLをHTTPSの方に書き換える処理が必要となります。下記のようにワードプレスのインストールフォルダにあるhtaccessファイルに追記します。
(htaccessファイルが見当たらない場合はこちらの記事を参照されてみてください)
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule>
上記リダイレクトループが発生する場合は下記でお試しください
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !=https RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L] </IfModule>
もしリダイレクトループが発生したら?
上記の設定でサーバーによってはリダイレクトループが発生してサイトがアクセス不能になる事があります。この場合、上記設定を消したうえで、ワードプレスのプラグインを使用してSSLを有効にすると正しくリダイレクトが動作するようになることがあります。
SSL化支援プラグイン
Really Simple SSL