新・元地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記

自由な20代、窮屈な30代を経て、遂に40代になっちまったWebディレクター&パソコン講師の覚書と思う言(こと)。略称【ちほちゅう】

*

さくらのレンタルサーバー+ラピッドSSLを使ってWordPressをhttps化するときの注意点

      2017/09/22

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

さくらインターネットで非常に安くSSLが使えるのをご存知でしょうか?
なんと、1年1500円、3年ですとなんと3200円(それぞれ税別)、1年間約1000円でSSLが使えちゃうという価格。
もちろん、独自ドメインに対応していて、以前は独自ドメインでSSLを使うのにすくなくても年間数万は掛かっていたと思うのですがこれは破格です。

□ ラピッドSSL | さくらのSSL

スポンサーリンク
 

ただ、落とし穴もあったりします。
やはり、それなりに知識のある方でないとなかなか設定できない。
さらに、知識があってもちゃんと設定するのは結構大変というしろもの。

今回は、WordPressでSSLが使えないという状態に陥ってしまったので、その対処法を解説したいと思います。まずは具体的な症状をお伝えしましょう。

WordPressの場合、SSLの設定がしっかりできていれば以下の設定でサイトのURLをhttpsに修正すればOKなはず。
簡単です。

トップページはこれでいけました。
httpのときと変わらずしっかり表示されているのですが、各個別ページに入ると以下のように表示されてしまいます。

原因を調べるためにソースを見るとこういった状態。

つまり、CSSやjavaScript等のパスがhttpになってしまっていて弾かれてしまうんです。
セキュリティを無視すればちゃんと表示されますが、それもちょっと一手間かかるし、心もとないのでなんとかしたいところ。

そこで、2つの対策をご紹介いたします。

パスの指定が絶対パスになっているところを相対パスに変える

上写真の通り、CSSやjavaScriptを「http://」で始まる絶対パスにしているから弾かれるわけであって、これを相対パス表記に全て変えてあげれば良いわけです。
それに関しては以下の記事にある記述を利用させてもらいました。

class relative_URI {
    public function __construct() {
        add_action('get_header', array(&$this, 'get_header'), 1);
        add_action('wp_footer', array(&$this, 'wp_footer'), 99999);
    }
    protected function replace_relative_URI($content) {
        $home_url = trailingslashit(get_home_url('/'));
        $top_url = preg_replace( '/^(https?:\/\/.+?)\/(.*)$/', '$1', $home_url );
        return str_replace( $top_url, '', $content );
    }
    public function get_header(){
        ob_start(array(&$this, 'replace_relative_URI'));
    }
    public function wp_footer(){
        ob_end_flush();
    }
}
$relative_URI = new relative_URI();

情報源: WordPressで自ドメインのURLを相対パスに変換する方法 – モンキーレンチ

これを「function.php」に追記してあげればOKです。
ただし、この方法ではサイトアドレスを「http://」記述にしてあげないと正常に動きませんでした。
設定が「http://」で「https://」でサイトを見るっていうのもちょっと気持ち悪いですよね。

そこでもう一つの方法、

WordPressに明示的に通信がSSLであることを伝える

なんでも、さくらのレンタルサーバでは、外部との通信はSSLで行われますが、内部でのやり取りは通常の通信でやり取りしているそうでして、実はそこがWordPressがSSL通信をしていないと判断してしまっている原因のようです。
さくらのレンタルサーバでは環境変数「HTTP_X_SAKURA_FORWARDED_FOR」を使ってSSL通信をしてるか否かを評価しているということですので、「HTTP_X_SAKURA_FORWARDED_FOR」を使い、WordPress側にSSLで通信していると思い込ませることで、ちゃんとパスを「https」で表記していくれるようなんです。

その手順が以下。

if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';
}

情報源: さくらレンタルサーバーの共有SSLを使う

これを第一階層にある設定ファイル「wp-config.php」の、「/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */」の前に記述すればOK。

現在はこちらで対応しております。

ということで、実はすでに一部SSL化をして様子見状態の当ブログ、
気になるPVや広告収入ですが、PVは微増、広告収入は微減といったところ。
まあ、もうちょっと様子見てみましょう。
(ってか、もう、後戻りできないよねぇ。。)

【追記】
上記設定を済ませた後にhttpからhttpsへの301リダイレクトの設定を忘れないようにしましょう。

WordPressをhttps(SSL)化、さくらインターネットのレンタルサーバーでリダイレクトループさせない「.htaccess」の書き方【前編】

 - WordPress, 覚え書き , , , ,

アドセンス広告メイン

Message

メールアドレスが公開されることはありません。

  関連記事

僕が感じた緊急地震速報の媒体に寄る速さ比較

このところ、緊急地震速報を聞かない日は無いんじゃないかと思うくらい日々、緊急地震 …

ワードプレス(WordPress)、トップページとは別の場所で記事一覧を表示させる方法 #wp

ワードプレス(WordPress)といえばブログ。元々ワードプレスはブログ用CM …

Flickr(フリッカー)のメール投稿機能が動かなくなったらひたすら待つべし

二度あることは三度あるのジンクスを覆すべく、キーボードを叩いております。いやぁ。 …

スマホ(スマートフォン)を機種変した時のLINE(ライン)の移行手順と注意点【Android→iPhone編】

スマホをiPhoneに変えた旨は先日ネタにしてました。 docomoのAndro …

「壁ドン」、「肩ズン」、「顎クイ」、「袖クル」、女性がときめくキュンとしてしまう男性の仕草

今年は雑誌をもっと読もうと思い、年末に3冊ほど買った雑誌の中の一つに出てきた言葉 …

簡単にドメインのIPアドレスを調べる方法

今まで、ドメインのIPアドレスを調べるのはWeb上のドメインサーチサービスを使っ …

スワイプやピンチアウトってどんな操作?【iPhone操作一覧】

iPhone(アイフォーン)を使い始めてマウスとは違ういろいろな操作方法があるこ …

知らぬ間にPHPがバージョンアップ。PHP5.6からいきなりPHP7になっていた

これ? いつからだったんでしょうか? 仕事であるWordPressの環境を自分の …

「WordPress(ワードプレス)」のプラグインをインストールする方法3つ

新しい豊洲のお仕事はCMS「WordPress(ワードプレス)」の改修が中心です …

no image
フォトショップが立ち上がらなくなったときの対処法

最近、自宅でフォトショップを開くと決まって 「テキストのグローバルリソースを読み …