curlでリダイレクト経路と最終URLを確認する ― 301/302を追跡する

ネットワーク・RFCカテゴリを表すパンダのイラスト ネットワーク・RFC

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。RFC 9110とcurl公式資料を確認し、301/302などのリダイレクトを「最初の応答」「途中経路」「最終URL」に分けて確認する方法を整理しています。

検証ステータス:📘 RFC/curl公式確認済み・実行未検証

ブラウザはリダイレクトを自動追従するため、「最初はHTTPだったのか」「www有りへ転送されたのか」「何段リダイレクトしたのか」が見えにくいことがあります。

curlなら、転送前のLocationと、最終的に到達したURLを分けて確認できます。

まず最初の応答を見る

curl -I https://example.com/

301、302、307、308などが返る場合は Location を確認します。

HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/

ここでcurlは、-I だけなら自動で次のURLへ進みません。

-Lでリダイレクトを追う

curl -I -L https://example.com/

-L / --location を付けると、Locationをたどります。

複数段ある場合、応答headerが順番に表示されます。

sequenceDiagram
  participant C as curl
  participant A as URL A
  participant B as URL B
  participant C2 as URL C
  C->>A: Request
  A-->>C: 301 Location: B
  C->>B: Request
  B-->>C: 302 Location: C
  C->>C2: Request
  C2-->>C: 200 OK

最終URLだけ知りたい

curlのwrite-outを使うと、最終URLを表示できます。

curl -sS -L -o /dev/null   -w 'HTTP=%{http_code}\nFINAL=%{url_effective}\n'   https://example.com/

確認したいのは次の2点です。

  • http_code: 最終応答のstatus

  • url_effective: 最後に到達したURL

何に使えるのか

実務では次の確認に便利です。

  • HTTP→HTTPS転送

  • www有り/無しの統一

  • 旧URL→新URLの301

  • WordPressのcanonical URL変更

  • リバースプロキシ設定

  • CDN導入後の転送

  • 認証前URL→ログインURL

SEOやサイト移行では、「転送される」だけでなく何段経由しているかも重要です。不要な多段リダイレクトは構成見直しの手掛かりになります。

無限ループも切り分けられる

A→B→Aのような設定ミスでは、ブラウザに「リダイレクトが多すぎます」と出るだけのことがあります。

curlでは最大回数を明示できます。

curl -I -L --max-redirs 5 https://example.com/

5回を超える場合はエラーになり、ループや過剰転送を疑えます。

認証情報付きURLでは注意

リダイレクト先が別ホストの場合、認証情報やCookieの扱いは慎重に確認します。

特に --location-trusted は、資格情報を別ホストへ送る可能性があるため、意味を理解せず使わない方が安全です。

障害調査結果を共有するときも、

  • Cookie

  • Authorization

  • 内部URL

  • セッション情報

をそのまま貼らないようにします。

「301と302の違い」だけで終わらせない

現場で必要なのは、status codeの暗記より、

  1. 最初にどこへ返されたか

  2. その次はどこか

  3. 最終URLはどこか

  4. 最終statusは何か

  5. 意図した経路か

を確認することです。

まとめ

  • -I で最初のLocationを確認できる

  • -L でリダイレクトを追跡できる

  • %{url_effective} で最終URLを確認できる

  • --max-redirs はループ調査に使える

  • 認証情報を伴うリダイレクトは慎重に扱う

公式情報・一次情報

文書情報

記事タイトル
curlでリダイレクト経路と最終URLを確認する ― 301/302を追跡する
作成日
更新日
Source URL
https://papanda925.com/?p=15381

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました