さくらのレンタルサーバでWordPressサイトを常時SSL化するとリダイレクトループが発生する場合の対処方法

本サイトのリニューアルに伴って常時SSL化したところ、リダイレクトが繰り返し行われてエラー画面が表示る状態(リダイレクトループ)になってしまいました。解決方法の備忘となります。

サーバ構成

  • さくらのレンタルサーバ(スタンダード)
  • 独自ドメインによるSSL(さくらSNI 独自SSL)

シンプルなコーポレートサイトのためトラフィックも少なく、さくらのレンタルサーバ(スタンダード)で必要十分な感じです。特別なチューニングはなにもありません。

症状

  • 常時SSL化でない場合(httpの場合)は正常表示される
  • WordPressと無関係の素のPHPやHTMLは正常表示される
  • ローカル環境では正常表示される

どうも さくらのレンタルサーバー + SSL(さくらSNI 独自SSL) + WordPress という環境でのみ発生する現象のようです。

原因

Google検索ですぐにわかりました。さくらSNI 独自SSLがリバースプロキシを介して構成されていることにより、PHPの$_SERVER変数と$_ENV変数に影響がでます。それによりWordPressがリクエストを正常に処理できなくなり、リダイレクトループが発生するようです。

詳細は さくらのレンタルサーバでHTTPS(SNI SSL)な独自ドメインのWordpressサイトを構築する際の注意点 に完璧な形でまとまっています(素晴らしい!)。

解決方法

wp-config.php の先頭で、$_SERVER変数と$_ENV変数をセットすることで解消できます。

補足:さくらSNI 独自SSLを介してリクエストされるときのみ、$_SERVER[‘HTTP_X_SAKURA_FORWARDED_FOR’] という変数がセットされます。そのため、if文による条件分岐を行います。

なお、さくらのレンタルサーバー(スタンダード)だけでなく、下記のサービスも独自SSLの仕様が同じなので、同じ現象が起こりうると思われます。

「SNI SSL」対象サービス

 ・さくらのレンタルサーバ
  - スタンダード
  - プレミアム
  - ビジネス
  - ビジネスプロ
 ・さくらのマネージドサーバ