原因判明しました。
https://www.haluka.org/
上述のURLでさくらのサーバが出力する環境変数例は、
以下の通りです。
$_SERVER['HTTPS'] = on
$_SERVER['HTTP_HOST'] = haluka.org
$_SERVER['HTTP_X_SAKURA_FORWARDED_FOR'] = *.*.*.*(マスク)
$_SERVER['SERVER_PORT'] = 80
$_SERVER['SERVER_NAME'] = haluka.org
$_ENV['HTTPS'] = on
$_ENV['HTTP_HOST'] = haluka.org
$_ENV['HTTP_X_SAKURA_FORWARDED_FOR'] = *.*.*.*(マスク)
$_ENV['SERVER_NAME'] = haluka.org
$_ENV['SERVER_PORT'] = 80
証明書を見て頂ければ分かりますが、私は証明書をwww付きで取っていますし
さくらの設定もそうしています。
しかしながら、さくらのサーバは、sslでwww付きでアクセスしているにもかかわらず
www無しの環境変数を返却します。
このため、私のサイトのようにwww付きのサイトでSSLを導入すると
必ずリダイレクトループになります。
<解決案>
wwwを取る
↑
あり得ない対応です。
<結論>
さくらのサーバでwww付きの独自SSL SNIでwordpressは動かない
<なぜ分かったか?>
なんどか再インストールしているうちに、
wp-admin/install.php
で指定したときのサーバではないもの(wwwがとれたもの)が
自動設定されるので、環境変数がおかしいのを疑いました。
そして、確認してみると案の定サーバ名称が異常でした。
(もっと早く気づけよという感じですw)
余談ですが、さくらでsniや共有SSL使っている人は
https://foo.jp→https://www.foo.jp/
のリダイレクトは出来ないという事になると思います。
どちらもfoo.jpで返ってくるので。
何か良い解決方法があれば、教えてください。
もし、しばらく待っても何も無いようであれば
クローズしたいと思います。
なお、httpsのプラグインなどは使う予定はないですし
https://foo.jp/blog
で設定して動かし、無理矢理https://www~にリダイレクトができるのは分かっています。
その場合、サーチエンジンなどすべてwwwなしで通知します。
とりあえず、原因が分かれば対策もあるという事で、
// プロクシでIPが入るとSSLアクセス状態をセットする
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
$_SERVER['HTTP_HOST'] = 'www.haluka.org';
$_SERVER['SERVER_NAME'] = 'www.haluka.org';
$_ENV['HTTP_HOST'] = 'www.haluka.org';
$_ENV['SERVER_NAME'] = 'www.haluka.org';
}
/** SSL関連 */
define('WP_SITEURL', 'https://www.haluka.org/blog/');
define('WP_HOME', 'https://www.haluka.org/blog/');
define('FORCE_SSL_ADMIN', true);
これで、ちゃんと動いてます。
私はアパッチとかphpとか全く知らないのですが、
これがどれだけ馬鹿げた行為なのかというのは
なんとなく理解しています。
でも、何かの助けになればと思って情報を残しておきます。
ではでは。
4ヶ月まえに散々なやんだ事ですが、
さくらのSSL割安キャンペーンで、同じ目に逢っている人が沢山いますね。
さくらのスタンダードで独自ドメインをwww付きで統一したい場合
必ずリダイレクトループの問題が発生しますので、
私のページを参考に www付き、www無しをそれぞれ、
サーバーコントロールパネルのドメイン設定で行って下さい。
また、wp-configの設定も実施する様にして下さい。
さくらでHTTPSにするSSL SNIの設定の仕方
さくら、スタンダードについて、私のページの読者より
環境変数
HTTP_X_SAKURA_FORWARDED_FOR
が、HTTPのアクセスでもアクセス元のIPアドレスがセットされるようになりました。
全サーバなのか、新契約者だけなのか、
一部のサーバだけなのか、インストールの仕方なのかは、不明な状態です。
この変数はさくらで、快適にHTTPSを使うには欠かせない変数でしたが
このような仕様変更が発生した場合は、
さくらでWordPressをSSLで動かせないという結論に至ります。
もし私のサイトの設定をした場合、リダイレクトループになったら
本現象が発生しているためと思われます。
問題部分は
if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
にてHTTP_X_SAKURA_FORWARDED_FORに何か値(IPアドレス)が入っていたら
すべてSSLとするため、リダイレクトループになります。
とっても残念ですが、サポートの状況を見る限り、
さくらのレンタルサーバプランでSSL化は、得策では無いと思います。
さくらをどうしても使いたい場合は、VPSなどのプランであれば
問題無く(私はVPSに変えました)動作します。
どなたか、解決法があればアドバイスをお願いします。
PS.以前Hinaloeさんが提示してくれたサイトで
簡単に環境変数を調べるスクリプトが公開されています。
こちらで、自分のプランでHTTP_X_SAKURA_FORWARDED_FORに何が入るか確認できます。
httpで接続してみて、この変数に値が入っていればSSLは無理です。諦めましょう。
test.phpをftp転送して実行してみればOKです
http://wsf.mot.or.jp/yujakudo/website-admin/shared-ssl/use-shared-ssl-of-sakura/
本件に関して、さくらサポートに問い合わせたところ、
環境変数を変更する等の仕様変更は実施していない
と回答を得ました。
とりあえず、ブログの方が何故HTTPでアクセスしているにもかかわらず
リバースプロクシ経由となっているのか、分からないままです。
本件、私のブログの内容で対策を実施し正常に動作した場合は、
特になにかする必要は無いと思います。
まずは、情報まで。
PS.今回の現象発生者は、さくらの自動インストールでWordPressを
インストールしたそうです。もし余裕があるなら
手動でアップロードした方が良さそうですね。