• ベストアンサー

file_get_contents でリダイレクトを知りたい

file_get_contents(url) で、サイトのHTMLを取り込むことは問題なくでき、そのサイトにリダイレクト(Locationヘッダ?)が設定されていると、ちゃんとリダイレクト先のHTMLを取得することができるのですが、リダイレクトされたことや、リダイレクト先URLは、どのようにすれば知ることができるでしょうか。 得られたHTMLはリダイレクト先の内容なのに、私が作ったプログラムが把握しているURLはリダイレクト元のアドレスなので、不整合が起きてしまい困っています。 ポインタで結構ですので教えていただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

ヘッダ情報が得られないと無理だと思います。 ソケット通信でヘッダ情報を取得すればLocationの場合にはヘッダに HTTP/1.1 302 Found と Location: http://example.com/ が含まれるので判別できます。

haru44
質問者

お礼

回答ありがとうございます。 file_get_contents の前にソケット通信でヘッダを取得してリダイレクトを検出することにしました。

その他の回答 (1)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

始めにget_headers()でヘッダを取得して、Locationヘッダが含まれていればLocationヘッダで指定されたURLからヘッダを取得し、Locationヘッダが含まれていなければそのURLからコンテンツを取得するようにすれば良いでしょう。 っていうか勝手にPHPのこととして回答しているんですが、PHPの話でいいんですよね? PHPの質問ならPHPのカテゴリでするようにして下さいね。

参考URL:
http://www.php.net/manual/ja/function.get-headers.php
haru44
質問者

お礼

回答ありがとうございます。 カテゴリについては、投稿後に間違いに気がつきましたが、修正できないようなので、申し訳ありません。 PHP4 のため get_headers() がなかったので、自前でヘッダを取得するようにし、リダイレクトを検出するようにしました。