12 分で読めます
URL リダイレクトの確認方法とリダイレクトチェーンの読み方
URL リダイレクトの確認方法を、TrueURL、curl、デベロッパーツールを使って手順ごとに解説します。リダイレクトチェーンの各ホップの読み方や、ループ、長いチェーン、301 と 302 の混在といった問題の直し方も紹介します。
記事を読む無料のリダイレクトツール
ドメインを入力すると、サイトにアクセスする 4 通りの方法(http と https、それぞれ www ありとなし)をテストします。どれも 1 回の恒久的なリダイレクトで、同じ HTTPS アドレスに到達するのが正しい状態です。
Enter を押してチェック
Cloudflare のエッジは常に証明書を検証するため、この設定で検証を省略することはできません。証明書の問題は結果に表示されます。
最初のリクエストで送信されます(最大 16 KB)。Content-Type ヘッダーを指定しない限り、JSON のボディは application/json として、それ以外はフォームとして送信されます。
1〜50 の範囲で指定します。ブラウザーは 20 ホップで停止します。
サイトによっては、スマートフォン、クローラー、リンクプレビュー用ボットをそれぞれ異なる方法でリダイレクトします。
チェーン内のすべてのリクエストで送信されます。
カスタムヘッダーはありません。
このヘッダーを送信するには値を入力してください。ヘッダーの値は保存されません。
HTML ページ内の <meta http-equiv="refresh"> タグと Refresh ヘッダーをたどります。
ページのスクリプト内にある location.href = "…" のような、単純で無条件のリダイレクトをたどります。
設定はこのブラウザーに保存されます。Cookie、ヘッダーの値、POST ボディは保存されません。
入力したホストについて、TrueURL は 4 つの開始 URL を作成し、それぞれを追跡します。
http://example.comhttp://www.example.comhttps://example.comhttps://www.example.com正しく設定されていれば、4 つすべてが 1 つの正規の HTTPS URL で終わります。そのバージョンは直接 200 OK を返し、残りの 3 つは 1 回の 301 または 308 でそこに到達します。HTTPS から HTTP に戻るホップがあれば警告が表示されます。
TrueURL は HSTS もチェックします。最終的な HTTPS レスポンス(通常は正規 URL)から Strict-Transport-Security ヘッダーを読み取り、その値をそのまま表示するとともに、max-age と、includeSubDomains や preload が設定されているかどうかを示します。max-age が 1 年以上であれば合格です。それより短い max-age、max-age=0、有効な max-age のないヘッダー、またはヘッダー自体がない場合は、警告として表示されます。
http://example.com から https://example.com、さらに https://www.example.com へと転送される場合です。スキームとホストのルールを統合し、どのバリエーションも最終 URL へ直接転送されるようにします(ただし、後述の HSTS プリロードの例外を参照してください)。www)が証明書の対象に含まれていません。Cloudflare のエッジは常に証明書を検証するため、そのバリエーションではリダイレクトではなく TLS エラーが表示されます。www の有無によって別々の URL で終わっているため、シグナルが 2 つのホストに分散しています。HSTS(HTTP Strict Transport Security)は、最初に HTTP でリクエストすることなく、自動的に HTTPS でそのドメインに接続するようブラウザーに指示する仕組みです。一般的なヘッダーは Strict-Transport-Security: max-age=31536000; includeSubDomains です。ブラウザーがこのヘッダーを受け入れるのは HTTPS のレスポンスだけで、暗号化されていない HTTP のレスポンスでは無視されます。
hstspreload.org でブラウザーの HSTS プリロードリストにドメインを登録したい場合、HTTP からの最初のホップは同じホストにとどめる必要があります。まず http://example.com から https://example.com へ転送し、その後で https://www.example.com へ転送します。この 2 ホップのチェーンは、「リダイレクトは 1 ホップに」という原則の例外として認められています。さらにヘッダーには、1 年以上の max-age、includeSubDomains、preload が必要で、HTTPS 上のリダイレクトのレスポンス自体でも送信しなければなりません。
12 分で読めます
URL リダイレクトの確認方法を、TrueURL、curl、デベロッパーツールを使って手順ごとに解説します。リダイレクトチェーンの各ホップの読み方や、ループ、長いチェーン、301 と 302 の混在といった問題の直し方も紹介します。
記事を読む13 分で読めます
すべての 3xx ステータスコードの意味を解説します。301、302、303、307、308 の違いを、恒久的か一時的か、メソッドの扱い、キャッシュ、SEO への影響で比較し、nginx、Apache、PHP の設定例も紹介します。
記事を読む上の入力欄にドメインを入力してください。TrueURL は http:// と https:// のバージョンを、それぞれ www ありとなしでリクエストし、各バージョンの最終的な到達先、使われたステータスコード、ホップ数を表示します。4 つすべてが同じ HTTPS URL に到達し、すべてのリダイレクトが恒久的であれば、設定は正しくできています。
SEO の観点では、どちらでも問題ありません。重要なのは一方を選び、もう一方を 301 でそちらにリダイレクトし、リンク、canonical タグ、サイトマップで一貫して使うことです。DNS ではルートドメインに CNAME レコードを設定できないため(回避策を提供している DNS プロバイダーもあります)、www のホストのほうが CDN に向けやすい場合がありますが、これは技術的な選択であり、ランキング要因ではありません。
この「307 Internal Redirect」は、サイトが HSTS のリストに含まれているために Chrome 自身が生成したもので、HTTP ではリクエストがまったく送信されていません。サーバーが実際に返すリダイレクトは 301 かもしれませんし、まったく別のものかもしれません。TrueURL には HSTS のキャッシュがないため、常にサーバーの実際のレスポンスを表示します。
小さな問題です。訪問者は最終的に HTTPS にたどり着きますが、一時的なリダイレクトは HTTP の URL が戻ってくる可能性があることを検索エンジンに伝えるため、HTTPS への移行が遅れたり、混乱したりすることがあります。301 または 308 に変更してください。
上の入力欄にドメインを入力し、結果の「HSTS ヘッダー」欄を開いてください。TrueURL は最終的な HTTPS レスポンスから Strict-Transport-Security ヘッダーを読み取り、その値、max-age(1 年未満の場合は警告)、includeSubDomains と preload が設定されているかどうかを表示します。このヘッダーがないと、ドメインを直接入力したときや古い http:// リンクからアクセスしたときは、毎回暗号化されていないリクエストから始まり、同じネットワーク上の第三者に傍受されるおそれがあります。ヘッダーがあれば、一度それを受け取ったブラウザーは、次回から直接 HTTPS で接続します。最初は短い max-age から始め、すべてのサブドメインが HTTPS で動作することを確認してから includeSubDomains を追加し、その後 1 年以上に引き上げてください。
問題があることはわかりますが、その先はチェックできません。Cloudflare のエッジでは、「SSL エラーを無視」をオンにしても証明書の検証を無効にできないため、該当するバリエーションではそのホップに TLS エラーが表示されます。とはいえ、知っておくべきなのはたいていその点です。ブラウザーでも、そこで訪問者に警告が表示されるからです。
すべての URL が対象です。サイト全体に適用するルールで、http://example.com/any/path?query を HTTPS の同じパスとクエリに転送する必要があります。いくつかの下層 URL はリダイレクトチェーンチェッカーで、多数の URL はリダイレクト一括チェッカーでまとめてテストしてください。