CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

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://」に変更します。

このエントリーをはてなブックマークに追加

Comment

  • Shin より:

    ワードプレスサイトの常時SSL化において
    WordPressの管理画面にログインし、
    メニュー「設定」⇒「一般」を開き、「http://~」となっている項目を「https://~」に変更します

    上記の内容を実行したところ、ログインもできなくなり、サイトも見ることもできなくなりました。
    どうすれば良いですか? WordPress.comで聞きましたが、良い回答はありません。

    • yamashiro より:

      すみません。
      SSL化についてはWordPressの設定のみではなく、サーバ環境などにも依存するので、
      その情報だけでは一概に判断できません m(__)m

Comment Form

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

Monthly Archives

Search