ITblog

WordPressサイトのサイト全体SSL手順(Cloudflare使用)

2017年06月19日

とあるWordPressで管理しているサイトを、世の中の流れでサイト全体をSSL化して、何箇所か苦労した箇所があるので手順を残しておきます。

1.Cloudlareで対象サイトをSSL化

まず、SSL証明書をCloudflare経由で無料で入手し、適用されるのを待ちます。

手順は簡単で、まずはCloudflareを導入して、対象のサイトを管理します。

対象サイトのDNS設定が完了したら、上メニューの「Crypt」を選択し、SSLのメニューの選択メニューで「Flexible」を選択します。
時間が経つと「Status:Active Certificate」となり、サイトにhttpsでアクセスできるようになります。

なお、この手順で使用できるようになるSSLは通常のSSL証明書とは異なるので、一部のブラウザでは挙動に問題が起こる場合もあるので、企業サイトなどきちんとしたサイトでの使用は推奨できませんが、個人サイトレベルであればほぼ問題無いと思います。
(一般に使用されるようなブラウザでは問題なく表示されます)

2.WordpressサイトをSSL化する

まず、私の場合はWordPressのサイトをSSL化するのに、プラグイン「Really Simple SSL」プラグインを使用しました。
プラグインを導入後、WordPress管理画面にhttpsでアクセスし、プラグインを有効化して設定を適用させることで反映されます。
なお、このプラグインはデータベース設定をhttp→httpsに置換するので、適用前にデータベースのバックアップを取っておいたほうが良いようです。

その後、管理画面からログアウトしてから再度管理画面にアクセスすると、リダイレクトループが発生してしまいました。
この問題は、wp-config.phpに以下の記述を追記することで解決しました。

define('FORCE_SSL_ADMIN', true);

if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
	$_SERVER['HTTPS']='on';
}

次に、もともとのサイトがhttpで検索エンジンに認識されていたので、301リダイレクトをhttpからhttpsにかけました。
.htaccessに以下の記述を追記しました。
最初はリダイレクトループしてしまったのですが、WordPressには最初から.htaccessに記述があるのですが、その記述の
上に書いておくと動作しました。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

WordPressの管理画面とサイトでそれぞれリダイレクトループが発生したのですが、上記の方法でそれぞれ対処できて問題なくhttpsでの動作確認ができました。

3.Google Analyticsの設定変更

Google AnalyticsのサイトURLもhttp→httpsに変更します。
プロパティ設定、ビュー設定のhttpをhttpsにそれぞれ変更します。

4.ウェブマスターツールの再登録

ウェブマスターツールにhttpのサイトを登録していた場合、httpsのサイトは別サイトとして登録する必要があります。
httpsからはじまるURLで登録をしておきます。
2の手順でhttp→httpsにリダイレクトをかけているので、サイトの評価はそのまま引き継がれます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です