さくらインターネットのレンタルサーバーのWordPressでSSL対応ではまったお話

Blog

wordpress-image

今まで、何件かSSL対応をしたことがあります。
さくらインターネットははじめてのSSL対応だったので久々にはまりました。

トップページは何もエラーもなく無事に対応ができました。
しかし、トップページより下のディレクトリで、画面崩れが発生します。

エラーをみると、httpとhttpsが混在し、危ないサイトとして、認識されました。
そのため、Safariでは普通に表示(内部的なエラーはあり)がされますが、Google Chromeだと、うまく表示されません。

Mixed Contentとなります。

より、詳しく見ると、たしかに、
CSSの読み込み部分やjsの部分が、http://ではじまっていました。

わからなかったのが、トップページとその下のディレクトリでは、共通のheader.phpというものを使いまわしています。
同じソースにもかかわらず、なぜトップページだけ、httpsになり、その下のディレクトリではhttpになるのか。

このサイトを見て、全てがわかりました。
さくらインターネットのSNI SSLでWordPressを運用できない
どうやら、

下層ページでは、$_SERVER[‘HTTPS’] がセットされていないことが判明。

だそうです。

WordPressのSSL判定は、wp-includes/functions.php 内の is_ssl() という関数があります。
上記のサイトのように、is_ssl()関数を全て、trueにしてしまう方法もあります。一応動作しましたが、functions.phpに入れるのは、少しこわいと思い、別の手順でやることにしました。

wp-config.phpに下記を入れると良いでしょう。

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

一応、念のため、私のほうでも、下記のソースコードで検証してみました。
サーバーのトップにtest.phpとして、httpでアクセスしたときとhttpsでアクセスしたときの挙動を確認しました。

<?php
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
echo "OK";
}
else{
echo "NG";
}

https://でアクセスするとOKが表示

http://でアクセスするとNGが表示されました

こんなことで、1日時間を潰して、しまいました。Wordpressを導入しても問題ないサイトであれば、このあたり、さくらインターネット側も対応すればいいのにと思いました。なぜ、この問題を放置するのかなと。

【参考サイト】
https://www.haluka.org/blog/2353/
http://webtechinnovation.blogspot.jp/2015/03/sni-sslwordpress.html

 

コメント

  1. 武蔵 より:

    ありがとうございました。
    散々悩んでいたのですが、1発で解決できました!!

タイトルとURLをコピーしました