書き置き。

ほぼ勉強の記録みたいなもんです。

au × SSL × header("location:~"); は相対パスで書け!

ハマリにハマった、このツボ。

<?php
header(locaiont"https://www.sample.com/aaa/bbb.php");

たぶんこの書き方の方が推奨されてたような気がするんだけども、

実際問題、これをSSL有の環境において、auのケータイで見た場合

エラーにより(502)のエラーが出る。

 

しかしwebサーバー側には、全くエラーログは残らないし、

au以外の携帯端末、PCでは何も問題なし。

検索しても同じようなハメで悩んでる人は見つからないし、厄介なので対応不可といいたいところだけども、クライアント担当者とその上司がauケータイを使っていて、そう簡単に片付けるわけにもいかなかった。

 

auの公式サイトによると、古い端末(非win?)ではSSL通信をする際に、端末とau鯖間でau独自のssl暗号化をしているのだとか。

コレが原因かと思っていろいろ調べてた。

 

簡単なサンプルページを数枚作成して、リンクを貼ってその先で別なファイルにheaderで飛ばしてみたり

POSTしてまたheaderで飛ばしてみたり・・・・・。

 

んで出た結論としては、

 

header("location:~"); を使うときは相対パスで書け! 

 

つまり

<?php
header(locaiont"https://www.sample.com/aaa/bbb.php");
?>

<?php
header(location:"bbb.php");

という具合に相対パスで指定してやると、問題解決。