ロードバランサーの後ろで WordPress を動かしている場合、WordPress に到着した時は、https 接続ではなく、http 通信である場合があります。
https にしたのに、なぜか WordPress がリダイレクトループ ( Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects
) などのエラーが多発する場合があります。
その場合は、サーバーがロードバランサーの配下にある場合があります。
当てはまるケース
- AWS ELB を使い、ELB と EC2 の間は、http (80) 番通信をしている場合
- Cloudflare の 無料 SSL サービス Flexible SSL を使っている場合
- Cloud9 の開発ツールを使っている場合 (AWS ELB の後ろにあります)
- さくらインターネットのレンタルサーバーで SSL 接続をしたい
STEP1: wp-config.php に下記を追加
まだ [管理画面] - [一般] で URL を https にしないで下さい。インストール時は、http でインストールして下さい。
wp-config.php に下記を追加します。WordPress 4.5 だと、95行目あたりが良いかも。
通常の場合
通常の場合は下記です。
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
}
さくらインターネットの場合
さくらインターネットは、通常とは違うヘッダー情報になるので下記のように特別な記述にする必要があります。
if ($_SERVER['X-Sakura-Forwarded-For']) {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
}
STEP2: WordPress 管理画面で、https の設定
WordPress の設定をここで行って下さい。
[管理画面] - [一般] の「WordPress アドレス」「サイトアドレス」を、ここで https に変更して下さい。
参考記事
さくらのレンタルサーバーと concrete5 で常時SSLを実装する方法
https://concrete5.co.jp/blog/sakura-internet-ssl