ブラウザの画面には出てこないけれど、サイトの挙動を決めているのがHTTPレスポンスヘッダーです。リダイレクトの連鎖、キャッシュの効き方、セキュリティ設定——SEOや表示速度のトラブルは、ヘッダーを見れば原因がわかることが少なくありません。
まず見るのはステータスコード
サーバーが「どう応答したか」を3桁の数字で表したものです。先頭の数字で大きく意味が決まります。
- 200 OK — 正常。監視ツールが「正常」と判定する基準もこれ
- 301 恒久的な移転 — 評価を引き継ぎたいURL変更はこちら
- 302 / 307 一時的な移転 — 評価は引き継がれない
- 403 拒否 — ファイル権限かアクセス制限
- 404 存在しない — リンク切れ
- 500 サーバー内部エラー — PHPのエラーログを見る
- 503 一時的に利用不可 — メンテナンス中や過負荷
リダイレクトは「回数」が問題になる
301自体は正常な仕組みですが、設定が積み重なると無駄なリダイレクトが連鎖します。ありがちなのが次のパターンです。
http://example.com/page → https://example.com/page (HTTPS化) → https://www.example.com/page (www統一) → https://www.example.com/page/ (末尾スラッシュ付与)
最終的に正しいURLへ着地はしますが、3回分の往復が毎回発生します。表示速度にも影響しますし、リダイレクトループになっていれば表示自体ができません。理想は1回で最終URLに着地させることです。
押さえておきたいヘッダー
Location — リダイレクト先
3xxのときに、どこへ飛ばそうとしているかを示します。意図しないドメインへ飛んでいないかを確認します。
Cache-Control — キャッシュの寿命
「更新したのに古い内容が表示される」原因の多くはここです。max-age の秒数だけブラウザやCDNが内容を保持します。逆に no-store になっていると毎回取得するため、静的ファイルなのに遅い、という状態になります。
Content-Type — 中身の種類と文字コード
文字化けの原因調査で見ます。HTMLなのに text/plain になっていればソースがそのまま表示されますし、charset の指定違いは文字化けに直結します。
Strict-Transport-Security(HSTS)
「次回以降このドメインには必ずHTTPSで来い」とブラウザに記憶させる指定です。HTTPへのアクセスを最初から遮断できる一方、一度長い max-age で配信すると期限まで取り消せません。導入時は短い値から始めるのが安全です。
Server / X-Powered-By
サーバーソフトやPHPのバージョンが出ていることがあります。攻撃者に既知の脆弱性を持つバージョンを教えることになるため、本番では隠しておくのが無難です。
確認してみる
HTTPヘッダー確認ツールにURLを入力すると、ステータスコードとレスポンスヘッダーをそのまま確認できます。リダイレクトは自動追跡せず、そのURLが返した生の応答を表示するので、多段リダイレクトの各ホップを1つずつ追えます。
まとめ
- まずステータスコード。301と302は評価の引き継ぎが違う
- リダイレクトは着地点だけでなく回数を見る。理想は1回
- 「更新が反映されない」はCache-Controlを疑う
- HSTSは強力だが取り消せない。max-ageは小さく始める

