この記事について
この記事は、生成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: 最終応答のstatusurl_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の暗記より、
最初にどこへ返されたか
その次はどこか
最終URLはどこか
最終statusは何か
意図した経路か
を確認することです。
まとめ
-Iで最初のLocationを確認できる-Lでリダイレクトを追跡できる%{url_effective}で最終URLを確認できる--max-redirsはループ調査に使える認証情報を伴うリダイレクトは慎重に扱う
