1

https://www.google.comの短縮URLを作成しました。

変換されたリンクについて短縮するために URL 短縮サービスを使用しました

短縮リンクをクリックすると、https://www.google.comにリダイレクトされます。

  1. 上記の場合、Google.com にリダイレクトせずに PHP を使用して短縮リンクから最終リンクを知るにはどうすればよいですか?

  2. PHPを使用して元/最終リンクに移動せずにリダイレクト数(再帰短縮URLの場合)を取得するにはどうすればよいですか?

4

2 に答える 2

4

さらに簡単な解決策は、ヘッダーのみを取得するようにカールを設定し(body を無視)、場所をたどることです。関数を使用curl_getinfo()して最後の URL を取得し、いいえ。リダイレクトの数:

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL => $url,
    CURLOPT_HEADER => false,
    CURLOPT_NOBODY => true,
    CURLOPT_FOLLOWLOCATION => true,
));
curl_exec($ch);
$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$redirect_count = curl_getinfo($ch, CURLINFO_REDIRECT_COUNT);
curl_close($ch);

これで変数ができました:

  • $last_url= リダイレクト ループの最後の URL
  • $redirect_count= いいえ。発生したリダイレクトの

取得できる他の優れたcurl_getinfo()パラメーターを見てみましょう。

ps に設定CURLOPT_HEADERtrueて、何が起こっているかを正確に確認できます。

于 2013-11-13T09:46:30.613 に答える
0

301 以外の応答コードに到達するまで、HTTP 応答に従います。

次のように、HTTP 応答コードと次の URL を取得できます。

$http = curl_init($url);
$result = curl_exec($http);
$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
$next_url = curl_getinfo($http, CURLINFO_REDIRECT_URL);
curl_close($http);
echo $http_status;
echo $next_url;
于 2013-11-13T09:39:17.993 に答える