PHP 開発者にとって、ジャンプ アドレスの取得は、クローラー プログラムで実際のジャンプ アドレスを取得する必要があるなど、非常に一般的な問題になる可能性があります。この記事では、PHP を使用してリダイレクトされたアドレスを取得する方法を説明します。
HTTP リダイレクト
HTTP プロトコルにおいて、リダイレクトとは、クライアント (Web サイト ブラウザなど) がサーバー (Web サイト サーバーなど) に要求したときに、サーバーがリダイレクト応答を返すことを意味します。クライアントはリクエストを別のアドレスに再送信する必要があると伝えます。このプロセスは HTTP リダイレクトと呼ばれます。
HTTP リダイレクトを実装するにはさまざまな方法がありますが、最も一般的なのは、HTTP ステータス コード 302 (見つかった) と 303 (その他を参照) を使用することです。サーバーがこれらのステータス コードを返すと、クライアントは自動的にリダイレクトを実行し、新しい URL アドレスにジャンプします。
リダイレクトされたアドレスを取得する
PHP では、curl 関数と header 関数を使用してリダイレクトされたアドレスを取得できます。以下は、curl を使用してリダイレクトされたアドレスを取得するサンプル コードです。
function getRedirectUrl($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); $redirectUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); curl_close($ch); return $redirectUrl; }
この関数は、URL をパラメータとして受け取り、この URL のリダイレクト後の新しいアドレスを返します。この関数では、次の点に注意する必要があります。
curl の使用に加えて、以下に示すように header 関数を使用してリダイレクトされたアドレスを取得することもできます。
function getRedirectUrl($url){ $redirectUrl = null; $headers = get_headers($url, true); if (isset($headers['Location'])) { $redirectUrl = $headers['Location']; } else if(isset($headers['location'])) { $redirectUrl = $headers['location']; } return $redirectUrl; }
この関数は get_headers 関数を呼び出して $url を取得します。仕様 URL の応答ヘッダー情報。応答ヘッダーに Location または location フィールドが含まれている場合、リクエストはリダイレクトされたと見なされ、リダイレクト アドレスが返されます。ヘッダー関数を使用すると、HTTP 応答ステータス コード 302 または 303 のリダイレクトのみがサポートされ、その他のステータス コードはサポートされないことに注意してください。
概要
この記事では、PHP を使用して HTTP リダイレクト後のアドレスを取得する方法を紹介しました。プログラム内でリダイレクトされたアドレスを追跡する必要がある場合は、curl または header 関数を使用して HTTP 応答ヘッダーの Location フィールドを取得し、リダイレクトされた URL アドレスを取得できます。
以上がPHPでジャンプ後のアドレスを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。