さくらレンタルサーバーの共有SSLを利用されてるのでしたらproxyのせいで
その症状になるそうです。
環境変数HTTP_X_SAKURA_FORWARDED_FORを使うことで解決できるとのこと。
gatolaboさま
ありがとうございます。
サクラで取得した独自ドメインでやっております。
SSLは外部のラピッドsslを使っています。
これでも環境変数を使うのでしょうか。
ちなみにあまりシステムやプログラミングには強くなく・・・
ネットで検索したものをコピーして使うぐらいの知識しかありません・・・
ご指導お願いいたします。
追記で
環境ですが
・サーバー サクラ
・独自ドメイン
・ラピッドsslを導入
・wp-config.phpで
define(‘WP_SITEURL’, ‘https://hoge.com’);
define(‘WP_HOME’, ‘https://hoge.com’);
の設定をしています。
・functions.phpで
function is_ssl() {
return true;
}
の設定をして強制的にssl常態化しています。
さくらインターネットの「SSL利用時の注意点」のページには以下のように書いてあります。
–引用開始–
環境変数の取扱い
「さくらのレンタルサーバ」にて提供しているウェブサーバApacheは、 80番ポートを使用する(HTTP)ものと、 443番ポートを使用する(HTTPS)ものとの 2種類に分けられます。 また、後者についてはプロクシとして動作します。 一般的に、前者は「http://」、後者は「https://」という形式でアクセスしますが、 同じディレクトリへのアクセスであっても、その際に呼び出されるウェブサーバ が異なると、 CGIプログラムやウェブサーバが.htaccessなどのファイルを読み込む際、挙動に違いが生じます。 例えば、HTTPとしてアクセスした場合はお手元のコンピュータが、 HTTPSとしてアクセスした場合は サーバそのものがアクセス元となります。 このため、SSLのみのアクセス許可(HTTPアクセスの制限)や、mod_rewriteによるURLの書き換えはできません。
–引用終了–
yamapyさんのされていることは環境変数とmod_rewriteを使用して RewriteCond %{HTTPS} off = SSLでなければ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] = httpsで始まるURLにリダイレクトさせよ になっています。
さくらのサーバ上では環境変数で「SSLでなければ」の判断が普通にできないので「httpsで始まるURLにリダイレクト」したものがSSLでないと判断されてまたリダイレクトされ、ループ動作になっています。
なので、正しい回答では「リダイレクトループの原因」はこの上の行。このやり方での対応方法は「無し」、他の解決方法は「知りません」でした。
HTTP_X_SAKURA_FORWARDED_FORは裏ワザ的なものでずっと使えるかもわからないものなので試行錯誤と不具合対応の立ち回りの上手い方以外には勧められるものではないものです。
他の方が賢明にも沈黙されている中、迂闊にしゃしゃり出てしまい申し訳ありません。先の回答は取り下げます。
gatolaboさん
ありがとうございます。
サクラサーバーではワードプレスのリダイレクトは難しいという結論ですね。
他に答えがありそうですが引き続きお待ちしております。
ちなみにリダイレクションズというプラグインを入れてやってみてもループはおきていました。
さくらのレンタルサーバーの仕様を知らないのですが
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
がリダイレクトループの原因になってるのは確かかと思います。RewriteCond %{HTTPS} off
以外のルールを追加してSSLか判断するか関連する変更を元に戻しプラグインでリダイレクトするのがいいかと。
ENV:HTTPSって変数が使えそうですね。
RewriteCond %{ENV:HTTPS} off
Or
// wp-config.php前半等に追記
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
}
多分共有SSLと同じ方法でよさそうです。HTTP_X_SAKURA_FORWARDED_FORも多分使える(?)
とはいってもおすすめはしないと(?)
Hinaloe様
ありがとうございます。
そしてごめんなさい。。。
上記のやり方は
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
をhtaccessに記述してプラス
// wp-config.php前半等に追記
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
}
という理解でいいでしょうか
あまりプログラミング強くなくて申し訳ありません。
サクラサーバーはどうも使いづらいですね。
そうですね、それで問題なさそうならそれでいいかと。(リダイレクトループが解消しないのであればhtaccessの該当記述は削除してWordpressHTTPSを利用してみてください。)
もちろん
function is_ssl() {
return true;
}
は消してくださいね。
いまさらですが、
下記を参考にしたら、なんとか解決しやした!
さくらSNI 独自SSLでドメイン全体をHTTPS化する
ご参考まで。