使い方
- 古いアドレスまたはパスに、古いアドレスかパスを入力します。例:/old-page/
- 新しいアドレスを入力し、リダイレクトの種類と転送する対象を選びます。
- サーバーまたはプラットフォームを選びます。結果にコードが表示されます。コピーとダウンロードのボタンがあります。
- ファイルをサーバーに保存し、頼る前に、リクエストのツールで各リダイレクトを確かめてください。
ルールの一致の仕組み
パスのルールは、入力されたパスに一致し、訪問者を新しいアドレスへ送ります。ページのルールは、そのページ1つに、末尾のスラッシュの有無にかかわらず一致します。フォルダーのルールは、そのフォルダーとその下のすべてのアドレスに一致し、パスの残りを新しいフォルダーへ引き継ぎます。
ホストのルールは、古いアドレスのホスト名に一致します。ドメインのルールは、パスと問い合わせ文字列を、新しいドメインの同じパスへ引き継ぎます。httpからhttpsへのルールは、httpで届くリクエストに一致し、2つのwwwのルールは、それぞれ1つのホスト名に一致します。
- サーバーのルールは問い合わせ文字列を保持するため、/old-page/?ref=1は /new-page/?ref=1になります。
- 正規表現はパスから作られます。ドットや角かっこなどの特殊文字はエスケープされるため、ルールは入力された文字どおりに一致します。
どのステータスコードを選ぶか
Googleのリダイレクトのガイドは、301と308はページが新しい場所へ恒久的に移ったことを意味すると説明しています。302と307は、一時的なリダイレクトに分類されています。サイトを新しいドメインへ移す場合を典型例として挙げ、移行をできるだけ途切れさせないようにすると述べています。また、リダイレクトを元に戻さないと確信できる場合に、恒久的なリダイレクトを使うよう勧めています。
恒久的なリダイレクトは、検索エンジンに新しいアドレスを結果に表示させます。一時的なリダイレクトは、古いアドレスを結果に残すため、古いページが戻ると見込まれる場合にだけ適しています。
サーバーごとの違い
サーバーごとにリダイレクトの書き方は異なり、一部はすべての種類のコードを受け付けません。このツールは、各サーバーが対応する最も近いコードを書き、結果にその旨を示します。
- IIS URL Rewriteは301、302、303、307に対応し、308には対応していないため、そこでは308は301になります。
- Netlifyのリダイレクトの設定は307の代わりに302を挙げ、308を挙げていないため、307は302に、308は301になります。
- Apacheのmod_aliasのRedirectは接頭辞に一致し、mod_rewriteのRewriteRuleは指定した正確なパスに一致します。
- Cloudflareの単一のリダイレクトは、ダッシュボードのルールです。このツールはその項目を示しますが、ルールは作成しません。
meta refreshとJavaScript:最後の手段
Googleのガイドは、リダイレクトの種類を、Googleが正しく解釈する可能性の高い順に並べています。サーバー側のリダイレクトが最初、次にmeta refresh、最後にJavaScriptです。Googleは、0秒のmeta refreshを恒久的なリダイレクト、遅延のあるものを一時的なリダイレクトとして解釈すると説明しています。
同じガイドは、サーバー側やmeta refreshのリダイレクトができない場合にだけJavaScriptのリダイレクトを使うよう述べています。描画が失敗することもあり、Googleがそのリダイレクトを見ないことさえあるためです。このツールのHTMLの出力は、301と308では0秒のmeta refresh、302と307では5秒のものを使います。
例:1ページを301で移動する
古いアドレスに /old-page/、新しいアドレスに https://example.com/new-page/、リダイレクトの種類に301、対象に「1つのページ」を入力します。Apacheの結果は下のRewriteRuleの行で、ほかのサーバーはそれぞれ、同じ転送先を持つ独自のファイルを受け取ります。
このルールは、末尾のスラッシュの有無にかかわらず正確なページに一致し、サーバーのルールは問い合わせ文字列を保持します。Cloudflareの項目は、式と固定の転送先で、ステータスコードは301です。
| サーバー | ファイル | 転送を行う行 |
|---|---|---|
| Apache | .htaccess | RewriteRule ^old-page/?$ https://example.com/new-page/ [R=301,L,QSA] |
| nginx | nginx-redirect.conf | return 301 "https://example.com/new-page/$is_args$args"; |
| Caddy | Caddyfile | redir @page "https://example.com/new-page/{?query}" 301 |
| Netlify | _redirects | /old-page https://example.com/new-page/ 301 |
| Cloudflare | ダッシュボードの項目 | カスタムフィルター式:(http.request.uri.path eq "/old-page" or http.request.uri.path eq "/old-page/") |
| HTMLページ | redirect.html | meta refreshのcontent="0; url=https://example.com/new-page/" |
よくある質問
301と302は、どちらを使うべきですか?
古いページが恒久的に移動し、検索エンジンに新しいアドレスを表示させたいときは301を使ってください。メンテナンス中など、移動が一時的な場合にだけ302を使います。
308は301と同じですか?
どちらも、ページが恒久的に移動したことを意味します。308はリクエストのメソッドを保つため、POSTはPOSTのままになりますが、301はGETに変えることがあります。IIS URL Rewriteは308に対応していないため、このツールはIISには301を書きます。
ApacheのRedirect行が、RewriteRuleより広く一致するのは、なぜですか?
Redirectのディレクティブは接頭辞に一致するため、/old-page/anythingも新しいアドレスへ送ります。RewriteRuleは正確なページだけに一致するため、出力では有効な行になっています。
このツールは、サーバーやCloudflareに何かを送りますか?
いいえ。コードはお使いのブラウザの中で書かれ、入力した内容がページの外に出ることはありません。Cloudflareのルールはダッシュボードで手作業で作る必要があるため、ツールはその項目を示します。
meta refreshが最後の手段とされるのは、なぜですか?
Googleのガイドは方法の優先順位を示しており、サーバー側のリダイレクトが最初、次にmeta refresh、JavaScriptが最後です。また、ページのファイルは訪問者を1つのアドレスにしか送れないため、フォルダーやドメイン全体にはサーバーのルールが必要です。
307がNetlifyでは302になるのは、なぜですか?
Netlifyのリダイレクトの設定は、対応していない307の代わりに302を使うよう示しています。そのファイルには、その旨のコメントが書かれます。
出典
- Apache mod_alias(英語): Redirectのステータス値と接頭辞の一致
- Apache mod_rewrite(英語): フラグ(R=codeを含む)
- nginx ngx_http_rewrite_module(英語): returnとリダイレクトのコード
- Microsoft(英語): URL Rewriteモジュールの構成リファレンス(redirectType)
- Caddy(英語): redirディレクティブ
- Netlify(英語): リダイレクトの設定(ステータスコード、末尾のスラッシュ、ドメイン単位のルール)
- Cloudflare(英語): 単一のリダイレクトの設定(ステータスコード)
- Google Search(英語): リダイレクトとGoogle検索
数値と文章の最終確認日:2026年11月10日火曜日。