12 分で読めます
URL リダイレクトの確認方法とリダイレクトチェーンの読み方
URL リダイレクトの確認方法を、TrueURL、curl、デベロッパーツールを使って手順ごとに解説します。リダイレクトチェーンの各ホップの読み方や、ループ、長いチェーン、301 と 302 の混在といった問題の直し方も紹介します。
記事を読む無料のリダイレクトツール
リダイレクトは HTTP のステータスコードによるものだけではありません。TrueURL はチェーン内の各ページの HTML を読み取り、meta refresh タグと JavaScript リダイレクトを、転送先の URL と遅延時間とともに検出します。
Enter を押してチェック
Cloudflare のエッジは常に証明書を検証するため、この設定で検証を省略することはできません。証明書の問題は結果に表示されます。
最初のリクエストで送信されます(最大 16 KB)。Content-Type ヘッダーを指定しない限り、JSON のボディは application/json として、それ以外はフォームとして送信されます。
1〜50 の範囲で指定します。ブラウザーは 20 ホップで停止します。
サイトによっては、スマートフォン、クローラー、リンクプレビュー用ボットをそれぞれ異なる方法でリダイレクトします。
チェーン内のすべてのリクエストで送信されます。
カスタムヘッダーはありません。
このヘッダーを送信するには値を入力してください。ヘッダーの値は保存されません。
HTML ページ内の <meta http-equiv="refresh"> タグと Refresh ヘッダーをたどります。
ページのスクリプト内にある location.href = "…" のような、単純で無条件のリダイレクトをたどります。
設定はこのブラウザーに保存されます。Cookie、ヘッダーの値、POST ボディは保存されません。
meta refresh は、指定した秒数の後に別の URL を読み込むようブラウザーに指示する HTML タグです。
<meta http-equiv="refresh" content="0; url=https://example.com/new-page">
遅延が 0 の場合は、通常のリダイレクトと同じように動作します。遅延が長い場合、訪問者にはまずそのページが表示されます。昔よく見かけた「数秒後に自動的に移動します」という案内ページがその例です。JavaScript リダイレクトは、location.href = '...' や location.replace('...') のようなコードで同じことを行います。どちらもクライアントサイドリダイレクトで、サーバーは 200 OK を返し、リダイレクトはブラウザーが行います。
ステータスが 2xx の HTML レスポンスについて、TrueURL はページの先頭 256 KB をスキャンし、meta refresh タグと、条件のない単純な JavaScript リダイレクトを探します。meta refresh と同じように機能する Refresh HTTP ヘッダーも検出します。見つかった場合は、該当するタグやスクリプトの断片、解決後の転送先 URL、遅延時間を表示し、そのホップに meta refresh または JavaScript のラベルを付けて、転送先からチェーンを続けます。同じページを再読み込みするだけの refresh はリダイレクトではないため、無視します。
ページそのものを確認したい場合は、詳細設定でそれぞれの種類の追跡をオフにできます。TrueURL は JavaScript を実行しません。ページ内のスクリプトを読み取り、ページの読み込み時に必ず実行される、固定 URL へのリダイレクトを認識します。即時に実行されるものと、トップレベルの setTimeout 内で実行されるものが対象です。クリック、同意の選択、画面サイズなどの条件に依存するリダイレクトや、転送先の URL をコード内で組み立てるリダイレクトは検出されません。HEAD のレスポンスにはスキャンするボディがないため、HEAD ではなく GET を使ってください。
Google は、設定できる場合は常にサーバーサイドリダイレクトを使い、meta refresh は 301 を送信できない静的ホスティングなどでの代替手段とするよう推奨しています。
時間指定のリダイレクトは、アクセシビリティ上の問題になります。スクリーンリーダーを使っている人や、単に読むのがゆっくりな人は、ページが予期せず切り替わると、どこまで読んだかわからなくなってしまいます。WCAG では、時間指定の meta refresh によるリダイレクトを失敗例(F40)として挙げる一方、遅延 0 の即時リダイレクトは認められた達成方法(H76)としています。
HTML でリダイレクトしなければならない場合は、遅延を 0 にし、新しい URL を指す canonical タグを追加したうえで、refresh に従わないブラウザーを使う訪問者のために、新しい URL への目に見えるリンクをページ内に設置してください。
12 分で読めます
URL リダイレクトの確認方法を、TrueURL、curl、デベロッパーツールを使って手順ごとに解説します。リダイレクトチェーンの各ホップの読み方や、ループ、長いチェーン、301 と 302 の混在といった問題の直し方も紹介します。
記事を読む13 分で読めます
すべての 3xx ステータスコードの意味を解説します。301、302、303、307、308 の違いを、恒久的か一時的か、メソッドの扱い、キャッシュ、SEO への影響で比較し、nginx、Apache、PHP の設定例も紹介します。
記事を読むGoogle は、即時の meta refresh(遅延 0)を恒久的なリダイレクトとして扱うため、実際には 301 とほぼ同じように機能します。遅延のある refresh は一時的なリダイレクトとみなされます。他のクローラーは meta refresh をそれほど確実に処理しない場合があるため、ホスティングで可能な限り、サーバーサイドの 301 を使ってください。
リダイレクトが HTTP レスポンスではなく、ページの HTML や JavaScript で行われているためです。curl -L のようにステータスコードだけをたどるツールは、200 のページで止まります。TrueURL はページの内容をスキャンし、クライアントサイドリダイレクトを独立したホップとして表示します。
リダイレクトが目的なら 0 秒です。遅延があると、Google にとっては一時的なリダイレクトになり、訪問者を待たせ、アクセシビリティの問題も生じます。遅延に意味があるのは、先にメッセージを表示しなければならないページだけで、そのページにも先へ進むためのわかりやすいリンクを設置すべきです。
いいえ。検出できるのは、ページの HTML 内にある、固定の転送先 URL を持つ条件のない単純なリダイレクトだけです。たとえば location.href = '...'、window.location = '...'、location.replace('...') などで、トップレベルの setTimeout 内にあるものも含みます。外部スクリプトファイル内のもの、条件付きのもの、ユーザーの操作で実行されるもの、URL を計算で求めるものは、実際のブラウザーで実行する必要があります。リダイレクトするとわかっているページでチェーンが止まる場合は、おそらくこれが理由です。
多くの場合、HTTP リダイレクトを送信できないためです。リダイレクトルールのない静的ホスティング、ページビルダー、古い CMS などが該当します。また、一部の短縮 URL サービスやクリック計測ツールは、先に解析用のスクリプトを実行したり、転送先に渡るリファラーを制御したりするために、HTML によるリダイレクトを使っています。
いいえ。HEAD のレスポンスにはヘッダーはあってもボディがないため、スキャンする HTML がありません。HEAD でチェックすると TrueURL が警告を表示します。このツールでは GET を使ってください。