[wordpress] (マルチサイト)のURLを、SSL化(HTTPS)にする手順

公開日:2019年1月16日

WEBサイトのURLをHTTP化する手順です。
現状、マルチサイトでは、データベースを直接書き換える必要があります。
(wordpressバージョン4.x)

データベースのバックアップ

phpMyAdmin(データべース接続ソフト)に接続して、タブメニューから「エクスポート」を開き、「実行」をクリックします。

データベースを書き換える

手作業で以下のテーブル内のURLを(https://~)に書き換えます。

wp_options
wp_site
wp_blogs(サブドメインを変更する場合など)
wp_sitemeta
wp_x_options

※wp_x_optionsの ”x” は、サイトID
※置換用SQL文で一括返還は危険との情報があるため試したことがありません。(wp-postsテーブルのguidのURLを変えるのは×)
※マルチサイトの場合、「Search Replace DB」で一括置き換え適用も避けて・・・と、wordpress codexに書いていますので使っていません。 wordpress引っ越し

記事内のURLを書き換える

※データを格納しているテーブル名
wp_posts

wp_postsテーブル内のデータを手作業で書き換えるのは、記事数が多い場合、大変というか不可能に近いので、wordpressの管理画面から、プラグインを利用して書き換えると簡単に書き換えることができます。※元に戻す機能はないので注意。

※プラグイン
search_Regex(wp5.×、php7.×などで動くのか未確認です)

テーマ内のURLをチェックする

テーマ内(テンプレート)に、(http://~)のままの記述が残っていないかチェックします。1か所でも記述が残っているとブラウザの鍵マークが緑色になりません。
ヘッダ内に貼っているタグのURLも、忘れずに(https://~)に書き換えます。
(http://~)を、(//~)に書き換えても問題ないようです。

ルートディレクトリーの.htaccessの一番上(先頭)に記述する

(http://~)にアクセスした場合に、(https://~)にリダイレクトさせます。

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

metaタグ追加で強制的にHTTPSで読み込む

HTTPSで通信するページにHTTPで始まるコードが混在していても、HTTPSで強制的に読み込ませることが可能になります。
HTTPが混在していると、ブラウザで見たときに鍵マークになりませんが、このタグを追加で解決しました。
私は、データベースを変更するより先にとにかく追加しています。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

以上、バックアップを入念にしてから作業されてください。