Re: 常時SSL化について
本件、皆様のアドバイスと確認用プログラムと報告を基になんとか解決出来たっぽいのでご報告いたします。
ど〜〜しても解決したかったので新たにドメイン+ラピッドSSLを購入して下記状態で検証してみました。
・concrete5 5.7.5.9(Elementalをインストール)
・さくらスタンダードプラン(ただし無料お試し期間)
・ラピッドSSL
・.htaccessは「使わないドメイン」の方だけ設定します。
・使いたいドメインを「https://domain.com」として説明
1)afujiwara様と同様に、コントロールパネルにて
www無しとwww有りを別々のドメインとして設定します。
→wwwを付与せずマルチドメインとして使用する(上級者向け)
の設定を使います。
フォルダもそれぞれ別の物を指定します。
両方にSNI SSLを設定します。
→最初に片方のドメインで登録し、その後、
秘密鍵のバックアップと会員メニュー>契約情報から
サーバー証明書をダウンロードして2個目に登録可能です。
2)ssl_redirect_confをインストールします。
URLルール(パス)に「*」だけ設定します。
3)プリティーURLを設定します。
プリティーURLは「URLから index.php を除く」にチェックを入れます。
4)application/bootstrap/app.php に下記を追記します。
$request = Request::getInstance();
if ($request->headers->has('X-Sakura-Forwarded-For')) {
$request->server->set('HTTPS', 'on');
}
※takuro hishikawa様、afujiwara様のデータとは異なり、
「HTTP_X_SAKURA_FORWARDED_FOR」の部分を「X-Sakura-Forwarded-For」
に変更しています。
※host名が曖昧になってしまうのは上記1)の箇所で
「マルチドメインとして使用する(推奨)」を設定した場合のみ
のようなので、他は省略しても大丈夫でした。
5)下記内容で application/config/にconcrete.phpというファイルを作成します。
<?php
return array(
'seo' => array(
'canonical_url' => 'https://domain.com/',
'canonical_ssl_url' => 'https://domain.com/',
),
);
参考:https://gist.github.com/katzueno/38eeecb606c7ea5661953cd6368ef972
6)最後に使わないドメイン(www.domain.com)のフォルダに.htaccessファイルを作成し、301リダイレクトを設定します。
以上となります。
これで下記全てプリティーURLを有効にしてリダイレクト可能でした。
http://domain.com/ → 'https://domain.com/'
http://www.domain.com/ → 'https://domain.com/'
http://www.domain.com/ → 'https://domain.com/'
今回、最大のヒントとなったのはafujiwara様の「問題は「プリティーURL」の設定を行った時」という一言でした。それを基に素の状態からデータを確認し、プリティーURLの有無でポートとスキーマだけでなく、Canonical URLまでデータが変更されている事が判り、それが無限ループの原因特定に繋がりました。
参考:インストール直後のhttps接続でccm/request_testの情報
プリティURL無効
Host: domain.com
Port: 443
Scheme: https
Secure: true
Canonical URL: 'https://domain.com/'
プリティURL有効
Host: domain.com
Port: 80
Scheme: http
Secure: false
Canonical URL: 'http://domain.com/'
takuro hishikawa様、afujiwara様をはじめ、皆様沢山のヒントとアドバイスありがとうございました。
aniya
Re: 常時SSL化について
Katz Ueno様アドバイスありがとうございました。
また、基本的な設定は同じですが、初心者向けに少しだけ詳細な設定方法を追記したものをqiitaにアップしました。
http://qiita.com/aniya/items/664491b523fe6c717b13
ご参考になれば幸いです。