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にリダイレクトをかけているので、サイトの評価はそのまま引き継がれます。