SSL を使っているページにいいねボタンやツイートボタンを設置すると警告が表示されてしまいます。そこで https 接続を行うページだけ違った処理をするために、PHP から http 接続なのか https 接続なのか判別したい時がありました。
通常、PHP のスーパーグローバル変数である $_SERVER[‘HTTPS’] の値が on になっていれば、https 接続であるという判断ができると思っていたのですが、あるレンタルサーバーでは https 接続なのに $_SERVER[‘HTTPS’] の値が on になりませんでした。
原因を調べたところ、レンタルサーバー業者側で SSL アクセラレーターという仕組みが使われている可能性があるようでした。SSL アクセラレーターは SSL で使う暗号化・復号化の処理を専門的に行うハードウェアです。SSL アクセラレーターからWebサーバーまでは http 接続になるようで PHP からはクライアントから https 接続があっても分かりません。
幸い、そのレンタルサーバーでは https 接続の時は必ず https://ssl.example.com/ のようにサブドメインが「 ssl 」になるので、ホスト名から判別するような処理に切り替えました。
https 接続なのに $_SERVER[‘HTTPS’] の値が on にならない場合は SSL アクセラレーターが使われている可能性があるということを疑ってみてください。