さくらのレンタルサーバー」はコストパフォーマンスが高いですが、.htaccess関連にかなりクセがあります。

httpで運用していたWordPressサイトをhttpsに統一する場合、一般的なサーバーであれば、.htaccessの冒頭に以下の通り記述すればよいのですが、さくらのレンタルサーバーでは無限リダイレクトが発生してしまいます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

これは、さくらのレンタルサーバーがSSL通信の際に独自のサーバー変数を処理しているためで、.htaccessとwp-config.phpに変更を加える必要があります。

.htaccessの編集

WordPressがデフォルトで作成する.htaccessのコード(# BEGIN WordPress〜# END WordPress )すべてを、下記のコードと置き換えてください。

WordPress本体をサーバールートに設置している場合の例です。一階層下などに設置している場合は、「RewriteBase」の行と「RewriteRule」の行のパスをサーバーに合わせて書き換えてください。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>
# END WordPress

wp-config.phpの編集

「編集が必要なのはここまでです ! WordPress でブログをお楽しみください。」の直前に、以下のコードを追加してください。

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

参照元

ソースはこちらです。詳しい技術情報の検証も行われているので参考にしてください。

さくらのレンタルサーバ・共有SSLで .htaccess によりSSLのみのアクセス許可を設定する方法 - 風柳メモ
さくらレンタルサーバーの共有SSLを使う | 悠雀堂

補足

参照元にもある通り、これは「さくらのレンタルサーバー」独自の仕様であるため、将来的に判定用の変数が変更・削除される可能性があります。
紹介したコードはその場合でも致命的な不具合は起こらない仕組みとなっていますが、httpsへのリダイクレクトは行われなくなるかもしれません。