TrueURL
TrueURL

メニュー

無料のリダイレクトツール

Meta Refresh チェッカー

リダイレクトは HTTP のステータスコードによるものだけではありません。TrueURL はチェーン内の各ページの HTML を読み取り、meta refresh タグと JavaScript リダイレクトを、転送先の URL と遅延時間とともに検出します。

meta refresh リダイレクトとは

meta refresh は、指定した秒数の後に別の URL を読み込むようブラウザーに指示する HTML タグです。

<meta http-equiv="refresh" content="0; url=https://example.com/new-page">

遅延が 0 の場合は、通常のリダイレクトと同じように動作します。遅延が長い場合、訪問者にはまずそのページが表示されます。昔よく見かけた「数秒後に自動的に移動します」という案内ページがその例です。JavaScript リダイレクトは、location.href = '...' や location.replace('...') のようなコードで同じことを行います。どちらもクライアントサイドリダイレクトで、サーバーは 200 OK を返し、リダイレクトはブラウザーが行います。

TrueURL がクライアントサイドリダイレクトを検出する仕組み

ステータスが 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 を使ってください。

検索エンジンによるクライアントサイドリダイレクトの扱い

  • 即時の meta refresh(遅延 0):Google は 301 と同様に、恒久的なリダイレクトとして扱います。
  • 遅延のある meta refresh:一時的なリダイレクトとして扱われるため、元の URL がインデックスに残りやすくなります。
  • JavaScript リダイレクト:Google がこれを認識するのはページをレンダリングした後で、クロールからかなり時間が経ってからになることもあります。他の多くのクローラーや、ほとんどのリンクプレビュー用ボットは、JavaScript をまったく実行しません。

Google は、設定できる場合は常にサーバーサイドリダイレクトを使い、meta refresh は 301 を送信できない静的ホスティングなどでの代替手段とするよう推奨しています。

アクセシビリティとユーザー体験

時間指定のリダイレクトは、アクセシビリティ上の問題になります。スクリーンリーダーを使っている人や、単に読むのがゆっくりな人は、ページが予期せず切り替わると、どこまで読んだかわからなくなってしまいます。WCAG では、時間指定の meta refresh によるリダイレクトを失敗例(F40)として挙げる一方、遅延 0 の即時リダイレクトは認められた達成方法(H76)としています。

HTML でリダイレクトしなければならない場合は、遅延を 0 にし、新しい URL を指す canonical タグを追加したうえで、refresh に従わないブラウザーを使う訪問者のために、新しい URL への目に見えるリンクをページ内に設置してください。

関連ガイド

  • 12 分で読めます

    URL リダイレクトの確認方法とリダイレクトチェーンの読み方

    URL リダイレクトの確認方法を、TrueURL、curl、デベロッパーツールを使って手順ごとに解説します。リダイレクトチェーンの各ホップの読み方や、ループ、長いチェーン、301 と 302 の混在といった問題の直し方も紹介します。

    記事を読む
  • 13 分で読めます

    リダイレクトのステータスコード解説:301・302・307・308

    すべての 3xx ステータスコードの意味を解説します。301、302、303、307、308 の違いを、恒久的か一時的か、メソッドの扱い、キャッシュ、SEO への影響で比較し、nginx、Apache、PHP の設定例も紹介します。

    記事を読む

よくある質問

meta refresh は 301 と同じように SEO の評価を引き継ぎますか?

Google は、即時の meta refresh(遅延 0)を恒久的なリダイレクトとして扱うため、実際には 301 とほぼ同じように機能します。遅延のある refresh は一時的なリダイレクトとみなされます。他のクローラーは meta refresh をそれほど確実に処理しない場合があるため、ホスティングで可能な限り、サーバーサイドの 301 を使ってください。

ブラウザーではリダイレクトされるのに、リダイレクトチェッカーに 200 と表示されるのはなぜですか?

リダイレクトが HTTP レスポンスではなく、ページの HTML や JavaScript で行われているためです。curl -L のようにステータスコードだけをたどるツールは、200 のページで止まります。TrueURL はページの内容をスキャンし、クライアントサイドリダイレクトを独立したホップとして表示します。

meta refresh の遅延は何秒にすべきですか?

リダイレクトが目的なら 0 秒です。遅延があると、Google にとっては一時的なリダイレクトになり、訪問者を待たせ、アクセシビリティの問題も生じます。遅延に意味があるのは、先にメッセージを表示しなければならないページだけで、そのページにも先へ進むためのわかりやすいリンクを設置すべきです。

TrueURL はすべての JavaScript リダイレクトを検出できますか?

いいえ。検出できるのは、ページの HTML 内にある、固定の転送先 URL を持つ条件のない単純なリダイレクトだけです。たとえば location.href = '...'、window.location = '...'、location.replace('...') などで、トップレベルの setTimeout 内にあるものも含みます。外部スクリプトファイル内のもの、条件付きのもの、ユーザーの操作で実行されるもの、URL を計算で求めるものは、実際のブラウザーで実行する必要があります。リダイレクトするとわかっているページでチェーンが止まる場合は、おそらくこれが理由です。

サイトが 301 ではなく meta refresh を使うのはなぜですか?

多くの場合、HTTP リダイレクトを送信できないためです。リダイレクトルールのない静的ホスティング、ページビルダー、古い CMS などが該当します。また、一部の短縮 URL サービスやクリック計測ツールは、先に解析用のスクリプトを実行したり、転送先に渡るリファラーを制御したりするために、HTML によるリダイレクトを使っています。

HEAD リクエストで meta refresh を検出できますか?

いいえ。HEAD のレスポンスにはヘッダーはあってもボディがないため、スキャンする HTML がありません。HEAD でチェックすると TrueURL が警告を表示します。このツールでは GET を使ってください。