F.Ko-Jiの「一秒後は未来」

PEARのHTTP_RequestでURLのリダイレクト先を調べる方法

よくフィードのアイテムのURLがリダイレクト用のURLになっていることがあって、そのURLをそのまま使おうとすると不便なことがあります。

そこでPEARのHTTP_Requestを使ってリダイレクト先のURLを調べる方法をメモ。

<?php
require_once('HTTP/Request.php');
$params = array(
    'method' => HTTP_REQUEST_METHOD_HEAD,
    'http' => '1.1',
    'allowRedirects' => true,
    'maxRedirects' => 3,
    'timeout' => 10,
    'readtimeout' => array(10, 0),
);
$http = new HTTP_Request($url, $params);
$http->sendRequest();
sleep(1);
$realUrl = $http->getUrl();

調査対象のURLが必ずしもリダイレクト用のURLでない場合もあるので、メソッドはHEADにしておきます。そうすれば常にHTTPヘッダーのみ取得できて相手サーバの帯域の節約になります。リダイレクトの最大回数やタイムアウトの数値は適当に。

1回のリクエストであればsleepする必要はありませんが、ループさせる場合は同一ホストに連続でリクエストする場合もあるのでsleepしておきましょう。あとはgetUrl()メソッドを使えば最終的なリクエストURL(つまりリダイレクト先のURL)を取得することができます。

Docs For Class HTTP_Request

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など