WordPressを常時SSL対応させます。
先日、GoogleがSEOの観点でSSLを導入したページを優遇することを発表しました。
ただ、明確な効果があるほど重点はおいていないともいわれていますが、特に大きな弊害もないので、全コンテンツSSL化を実施してみます。
WordPressのSSL化については「お問い合わせフォームのみSSL化する」や「管理画面のみSSL化する」のは難しいといった話題がよく聞かれます。
そこで、今回はシンプルにオープンなコンテンツも含め「常時SSL化」します。
設定変更
WordPressの管理画面にログインします。
メニュー「設定」⇒「一般」を開き、以下の「http://~」となっている項目を「https://~」に変更します
WordPress アドレス (URL) : http://~ サイトアドレス (URL) : http://~
WordPressの設定は以上です。
テンプレートの調整
WordPressで使用しているテンプレートについて、ソースに記述しているパス「http://~」を「https://~」に変更します。
その他にも、WordPressではリソースのパスを取得する関数にはhttpではしまるパスを返すものがあるので、httpsなどに書き換える処理を追加する必要があります。
例えば、画像のパスを取得する関数「get_the_post_thumbnail」や「wp_get_attachment_image_src」などはhttpではじまるURLで出力するので、置換する必要があります。
ここで置換処理について「SSLドメインの場合のみ」としたい場合に、サーバや証明書の種類によってPHPでの判定条件が異なるので処理が難しくなります。
そこで今回は単純にWordPressの設定値をみて判断することにしました。
if(strpos(get_bloginfo('url'), 'https') !== false){ $url = str_replace('http:', 'https:', get_the_post_thumbnail()); }
さらにGoogle Maps APIなど外部リソースを読み込む際にもhttpsで記述します。
https://maps.googleapis.com/maps/api/js?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&sensor=true
投稿を調整
投稿の中には画像リソースなどを「http://~」で記述しているかもしれません。
一つ一つ編集するのはたいへんなので、プラグインなどを活用して一括置換をかけるとよいでしょう。
例えば、以下のプラグインで簡単に置換をかけることができます。
「Search Regex」で投稿したWordPressの記事に文字列一括置換をかける
さくらレンタルサーバでhtaccessを利用してhttpsへリダイレクト
htaccessを利用してhttpへのアクセスを全てhttpsへリダイレクトさせる方法です。
つまり、httpへのアクセスを禁止します。
通常、全ページのリダイレクトはhtaccessファイルのみで設定できますが、さくらレンタルサーバの場合、サーバの設定からWordPressのリダイレクトが自動的にhttpsからhttpへ向けられ、リダイレクトの無限ループが発生するという問題があります。
そこで、初めにWordPress側の設定を変更します。
wp-config.phpファイルを開き、以下を追記します。
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) { $_SERVER['HTTPS'] = 'on'; $_ENV['HTTPS'] = 'on'; }
これで無限ループを抑えることができます。
次にWordPressのルートにあるhtaccessを編集します。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteRule ^(.*)$ https://cms.helog.jp/$1 [R=301,L] </IfModule> # BEGIN WordPress ...
この内容を通常のWordPressのパーマリンク設定の記述「# BEGIN WordPress」の前に追記します。
その他外部サービスなどの確認
その他外部サービスなどを利用している場合に、その設定内容を見直す必要があります。
解析系だと例えばGoogle Analytics。サイトの設定からデフォルトのURLなどを「http://」から「https://」に変更します。
コメントする