piapia123
ja

リダイレクトコード生成

Web

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

あるアドレスから別のアドレスへ転送する、という同じ一つのことを書くのに、技術スタックごとに書き方はまったく違います。Apache なら .htaccess の Redirect 一行、Nginx なら location ブロック、PHP なら header() 一行、静的ホスティングなら meta refresh しかありません。このツールは十一種類の書き方を一つにまとめたものです —— 移動先を入れてステータスコードを選ぶだけで、そのまま貼れるコードが出てきます。ステータスコードは固定ではありません。301 は恒久、302 は一時という違いは検索エンジンにとって別物なので、選んだ値は生成コードにそのまま入ります。既定の一行が 302 しか出せない ASP・ASP.NET・JSP・Java についても同じです。表現できない部分はコード中のコメントに明記します —— meta refresh や window.location はブラウザ側の遷移であり、HTTP レスポンスは 200 のままで、それはリダイレクトではありません。

機能

  • 十一種類の出力先:Apache(.htaccess)、Nginx、HTML(meta refresh)、JavaScript、PHP、ASP、ASP.NET、JSP、Java、Perl、Python
  • ステータスコードは 301 / 302 / 303 / 307 / 308 から選択でき、どの出力先でも選んだ値がそのまま使われる
  • ASP・ASP.NET・JSP・Java では、302 しか送れない Response.Redirect や sendRedirect を使わず、ステータスと Location ヘッダーを明示的に設定する
  • Nginx は完全一致(location = /old)と前方一致(ソースパスを /old/* と書く)を書き分ける
  • Apache は mod_rewrite ではなく mod_alias の Redirect ディレクティブを出力する
  • Perl の出力では $ と @ をエスケープし、変数展開されないようにする
  • 複数行を入れると複数のルールを生成(一度に最大 20 件)
  • アドレスに空白・引用符・バックスラッシュ・山括弧がある場合は、壊れた構文を出す代わりに理由を添えてエラーにする
  • 生成されたコードはシンタックスハイライト付きで、まとめてコピーできる
  • 処理はすべてブラウザ内で完結し、移動先の URL は送信されません

使い方

  1. 移動先の完全な URL を入力欄に入れる(複数のルールは 1 行ずつ)
  2. 出力先を選ぶ
  3. Apache か Nginx の場合はソースパス(元ページのサイト内パス)も入力する
  4. ステータスコードを選ぶ:ドメイン移行や恒久的な変更は 301、一時的なキャンペーンページは 302
  5. コードをコピーする。冒頭のコメントに、意図との違いが書かれています

よくある質問

301 と 302 はどちらを選ぶべきですか?
ドメイン移行や恒久的なパス変更は 301 です。検索エンジンは旧アドレスの評価を新アドレスに引き継ぎ、インデックスも置き換えます。キャンペーンページ、メンテナンスページ、A/B テストは 302 で、旧アドレスは有効なままでインデックスも書き換わりません。間違えたときの代償は対称ではありません。302 にすべき場面で 301 を返すと、ブラウザや中間キャッシュがその転送を長期間覚えてしまい、旧 URL に戻ってきた利用者が元の内容を見られなくなることがあります。逆の場合は評価が移らないだけです。迷ったら 302 から始めてください。
JavaScript と meta refresh にはなぜステータスコードが無いのですか?
どちらもブラウザ側の遷移だからです。サーバーは通常どおり HTTP 200 のページを返し、そのあとでスクリプトや meta タグがブラウザを移動させます。クローラーやプロキシから見れば、そのアドレスでリダイレクトは起きていません —— ステータスコードもキャッシュの挙動も元のページのままです。したがってステータスコードが必要ならサーバー側の出力先(Apache・Nginx・PHP・ASP・JSP など)を選んでください。meta refresh が適するのは、サーバー設定を触れない静的ホスティングだけです。同じことは生成コードのコメントにも書かれています。
「ソースパス」が Apache と Nginx でしか使えないのはなぜですか?
設定ファイルに「どのパスをどこへ飛ばすか」を書くのがこの二つだけで、ソースパスはそのルールの条件にあたるからです。PHP・ASP・JSP の出力は「このリクエストにどう応答するか」であり、そのコードがどの条件で実行されるかは、どのファイルやルートに置くかで決まります —— ツール側からは分かりません。推測で if 文を組み立てても、当てずっぽうのコードが増えるだけです。
生成されたコードのコメントが英語なのはなぜですか?
コメントは .php や .java、.cs のファイルに入り、そこにあるコードと同じ言語で読まれるからです。英語のコードの中に一行だけ別の言語のコメントがあると、次にそのファイルを開く人(おそらくあなた自身)がそこで少し立ち止まります。このページ上のもの —— 選択肢、エラー、説明 —— はすべて表示言語に従います。
アドレスに疑問符・日本語・空白が入っていても大丈夫ですか?
疑問符・等号・&・日本語は問題ありません。そのまま生成コードに入ります。空白・引用符・バックスラッシュ・山括弧は拒否し、先にパーセントエンコードするよう促します。これらの文字のエスケープ規則は十一種類の言語でそれぞれ異なり、どれか一つを選ぶのは賭けです。外したときに出るのは壊れた構文で、しかもエラーが出るのはこの画面ではなくあなたのプロジェクト側です。
入力したアドレスは送信されますか?
いいえ。アドレスとステータスコードはブラウザのメモリ上で文字列として連結されるだけで、ページは一切リクエストを送りません。オフラインでも動作します。

関連ツール