さくらサーバーのWordPress SSL対応でつまづいたリダイレクト問題「このページは動作していません」

既存サイトを常時SSL化、HTTPSに対応しようとすると、リダイレクトや既存のフルパスの変更など、作業が結構あります。

新規SSLサイトなら手間も少ない・・・と思っていたらさくらのレンタルサーバでワードプレスをSSL化した時にリダイレクトの問題に躓いてしまいました。

参考にさせて頂いた記事の紹介をしています。大変助かりました!

ちなみに、さくらのスタンダードで、SSLはラピッドSSLを利用した環境です。

追記
※現在はさくらサーバーも無料で常時SSL(HTTPS)にできるようになりました。
こちらでサーバーの比較もおこなっていますので参考にしていただければ幸いです。


このページは動作していません

もし、サイトがリダイレクトで見られなくなり、管理画面には行けるようなら、僕と同じ状態かもしれません。

sakura-ssl-redirect-problem-02

www.ご利用ドメイン.jp でリダイレクトが繰り返し行われました。
Cookie を消去してみてください.
ERR_TOO_MANY_REDIRECTS

となってしまいますが、管理画面にはアクセスでき、一般設定はこのようになっています。

sakura-ssl-redirect-problem

ちょっと不可解な現象だったのですが、

一般設定でwww無しにする >> TOPページでアドレスバーのURLをhttps://wwwにする > 表示できる
管理画面でwww有にする >> TOPページのURL https://www にアクセスできない(リダイレクトでエラー)

というものでした。

色々と調べた結果、以下のサイト、ウェブタタン様の情報を参考にして解決することができました。

ひとおおりのhttps化作業をおこなっても私の場合、CSSがうまく読み込まれませんでした。調べたところ、さくらレンタルサーバーの仕様によりhttpsからhttpへリダイレクトされてしまうようです。
さくらインターネットの場合、httpsの判定は’HTTP_X_SAKURA_FORWARDED_FOR’という文字列で行います。

引用 https://webtatan.com/blog/wordpress/wordpress-https-sakura

wp-config.phpの修正

wp-config.phpの先頭に以下のコードを追加します。

if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';
    $_SERVER['HTTP_HOST'] = 'ドメイン名';
    $_SERVER['SERVER_NAME'] = 'ドメイン名';
    $_ENV['HTTP_HOST'] = 'ドメイン名';
    $_ENV['SERVER_NAME'] = 'ドメイン名';
}

www付きだったり、サブドメインだったりする場合は以下のようになりますね。

<?php
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';
    $_SERVER['HTTP_HOST'] = 'www.xxxxxxxxx.jp';
    $_SERVER['SERVER_NAME'] = 'www.xxxxxxxxx.jp';
    $_ENV['HTTP_HOST'] = 'www.xxxxxxxxx.jp';
    $_ENV['SERVER_NAME'] = 'www.xxxxxxxxx.jp';
}
/**
 * The base configurations of the WordPress.
 *
 * このファイルは、MySQL、テーブル接頭辞、秘密鍵、言語、ABSPATH の設定を含みます。
 * より詳しい情報は {@link http://wpdocs.sourceforge.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86 
 * wp-config.php の編集} を参照してください。MySQL の設定情報はホスティング先より入手できます。
 *
 * このファイルはインストール時に wp-config.php 作成ウィザードが利用します。
 * ウィザードを介さず、このファイルを "wp-config.php" という名前でコピーして直接編集し値を
 * 入力してもかまいません。
 *
 * @package WordPress
 */

/* 以下略(通常のwp-config.html) */

.htacceccへの追記

こちらもコードの追加で対応可能でした。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://ドメイン名/$1 [R=301,L]
</IfModule>

注意する点はやはり、www付きやサブドメイン、サブディレクトリ(/wp/ や /blog/など、特定のWordPressのTOPページURL)についてです。こちらにはディレクトリの指定も必要な点に注意しましょう。

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

さくらサーバーは手軽に利用できる価格帯で、おすすめすることが多いです。ラピッドSSLも年額1,500円で利用できるのはありがたいですね。

他にも常時SSLについての記事を書いているのでよかったら参考にして下さい。

HTTPのままだとchromeにアラートが??やはり常時SSL化の波は避けられない・・・複数サイトを保持しているなら無料で独自SSLが使えるサーバーへの引っ越しも有りですね。

常時SSLが無料で導入できるZenlogicでDNSの設定からWordPressインストール、HTTPS化までの道のりをここに記す。



コメントをどうぞ

  1. さくらサーバーの常時SSLの対応に役立ちました。ありがとうございます。

    1. コメントありがとうございます!
      さくらもようやく無料SSL導入してくれましたね~^^

コメントを残す

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

コメントの前にご確認ください。

  • コメントは承認制のため、反映・表示までお時間を頂きます。
  • メールアドレス等の入力も必須ではありませんので入力の必要はありません。お気軽にどうぞ。(冷やかしは止めてね!)
  • コメントや返信があっても通知は届きませんのでご注意下さい。
  • 忙しい時はレスが遅れることもあります。
  • 当ページによる一切の不利益および損害に関し、責任を取ることはできません。