【WordPress】さくらのレンタルサーバーでSSL化する

投稿日:10/11/2015 更新日:

さくらのレンタルサーバーでホストをしながら、WordpressをSSL化をするとき、少し手間取ったのでメモを残しておきます。

問題

さくらのレンタルサーバーでSSLを有効にしたが、https://でサイトにアクセスするとブラウザでエラーが表示されて、サイトが閲覧できなかった。
利用サービスは「さくらのSSL」で、Rapid SSLを使用。なお、さくらのSSL経由で認証局への手配やら、暗号鍵のサーバーインストールは正常に完了している。

原因

さくらのレンタルサーバーはSSL通信をする際、さくらのサーバーからリダイレクトをかけていた。

参照:さくらレンタルサーバーのサポートページ

「さくらのレンタルサーバ」にて提供しているウェブサーバApacheは、 80番ポートを使用する(HTTP)ものと、 443番ポートを使用する(HTTPS)ものとの 2種類に分けられます。 また、後者についてはプロクシとして動作します。 一般的に、前者は「http://」、後者は「https://」という形式でアクセスしますが、 同じディレクトリへのアクセスであっても、その際に呼び出されるウェブサーバ が異なると、 CGIプログラムやウェブサーバが.htaccessなどのファイルを読み込む際、挙動に違いが生じます。 例えば、HTTPとしてアクセスした場合はお手元のコンピュータが、 HTTPSとしてアクセスした場合は サーバそのものがアクセス元となります。 このため、SSLのみのアクセス許可(HTTPアクセスの制限)や、mod_rewriteによるURLの書き換えはできません。
引用元:https://help.sakura.ad.jp/app/answers/detail/a_id/2325

解決方法

さくらのレンタルサーバーでSSL通信をするときに、サーバーからのリダイレクトで処理することを認識させる設定を.htaccessに記述する必要があった。

参考:さくらのレンタルサーバでHTTPS(SNI SSL)な独自ドメインのWordpressサイトを構築する際の注意点

設定の引用

※環境ごとの設定は適宜変更してください。

まず、Wordpress設置時に追加する(パーマリンク設定時に生成される).htaccessの先頭に、以下の設定を追加します。

.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
</IfModule>

次に、wp-config.phpの先頭に以下の内容を追加します。

wp-config.php
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';
    $_SERVER['HTTP_HOST'] = 'www.example.com';
    $_SERVER['SERVER_NAME'] = 'www.example.com';
    $_ENV['HTTP_HOST'] = 'www.example.com';
    $_ENV['SERVER_NAME'] = 'www.example.com';
}

引用元:http://qiita.com/tabimoba/items/64ef60412abe7ad6f0ac

その後

上記設定でhttps://のURLが問題なく閲覧できるようになりました。一方で、サーバー側の負荷が増えたようで、これまで1.0秒以下のレスポンスタイムだったが、1.1~1.2秒レスポンスにかかるようになってしまいました。リダイレクトはさくらのレンタルサーバーの設定上、どうしようもないので、アクセスが増えて来たらリダイレクトのないサービスに移行する必要が出てくると考えています。

 

スポンサードリンク

Copyright© ガンサバイバーのデジタル日誌 , 2018 All Rights Reserved.