携帯やらPCのブラウザやらでWebサイトを見る場合、
HTTPというプロトコルでやり取りをして
その結果を人間にわかりやすいようにグラフィカルに表示をしている。
そのやり取りには当然ルールがあって、
そのルールに従って
「○○ってページをちょーだい~」
「OKこれだよ~」
みたいなやり取りを意識しなくても裏で勝手にやっている。
で、Locationとはその中の一つで
Locationレスポンスヘッダフィールドなんて言ったりするが
役割は、
「○○ってページをちょうだい~」
「ここじゃなくて、××に取りに行ってね」<これ
こんな返事のことだ。
で、phpで書くなら
header(“Location: http://xxxxxx/”);
みたいな感じ。
このURLは、RFC的には絶対URLでなければならないと定義されているが、
IEやFirefoxなどは相対URLでも動く。
通常、開発作業をする場合、
・ローカルネットワーク内の開発サーバ
・携帯で確認するためのインターネット上の開発サーバ
・本番サーバ
最低、この3つの環境がある。
本番サーバの前に、デザインチェックのためのUPサーバが入ることもある。
当然、各環境のURLが違う。
Locationさせようとするとその辺りに気をつけなければならないし
絶対URLじゃなきゃダメという仕様を知らないと、
確認環境やほとんどの携帯で動いてしまうため気づかずに使ってしまうことがある。
実際に手元にある端末でテストしてみると、
auの、Win系、A系
Vodafoneの、P系、3GC系
DoCoMoの、FOMA90x系、FOMA70x系
それぞれ相対パスであっても正常にリダイレクトしてくれる。
(「正常に」ではないのかな・・)
でも、
DoCoMoの50x系は、SO505iSとP506iCは動いたが
F505iGPSとN503iは動かずに、
「無効なデータを受信しました」
という、端末のメッセージが出る。
502系などはそろそろ対応端末から締め出されつつあるが
505,504,503系はまだまだ現役感がある。
ちなみに、SSLのページ内でリダイレクトする場合、
P506iCなどは、毎回メッセージがでるのでうざったかったりする。
Locationは、ダブルポスト防止や、
PC/携帯のページ振り分けに使うことがよくある。
最近、新人くんやバイトを開発に使うようになってきたので、
ソースチェックをしっかりしないと
うっかり相対パスで書いてあって、いらぬトラブルを起こしそうだ。