- ベストアンサー
file_get_contents でリダイレクトを知りたい
file_get_contents(url) で、サイトのHTMLを取り込むことは問題なくでき、そのサイトにリダイレクト(Locationヘッダ?)が設定されていると、ちゃんとリダイレクト先のHTMLを取得することができるのですが、リダイレクトされたことや、リダイレクト先URLは、どのようにすれば知ることができるでしょうか。 得られたHTMLはリダイレクト先の内容なのに、私が作ったプログラムが把握しているURLはリダイレクト元のアドレスなので、不整合が起きてしまい困っています。 ポインタで結構ですので教えていただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ヘッダ情報が得られないと無理だと思います。 ソケット通信でヘッダ情報を取得すればLocationの場合にはヘッダに HTTP/1.1 302 Found と Location: http://example.com/ が含まれるので判別できます。
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
回答No.2
始めにget_headers()でヘッダを取得して、Locationヘッダが含まれていればLocationヘッダで指定されたURLからヘッダを取得し、Locationヘッダが含まれていなければそのURLからコンテンツを取得するようにすれば良いでしょう。 っていうか勝手にPHPのこととして回答しているんですが、PHPの話でいいんですよね? PHPの質問ならPHPのカテゴリでするようにして下さいね。
質問者
お礼
回答ありがとうございます。 カテゴリについては、投稿後に間違いに気がつきましたが、修正できないようなので、申し訳ありません。 PHP4 のため get_headers() がなかったので、自前でヘッダを取得するようにし、リダイレクトを検出するようにしました。
お礼
回答ありがとうございます。 file_get_contents の前にソケット通信でヘッダを取得してリダイレクトを検出することにしました。