リダイレクトコード生成
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 は送信されません
使い方
- 移動先の完全な URL を入力欄に入れる(複数のルールは 1 行ずつ)
- 出力先を選ぶ
- Apache か Nginx の場合はソースパス(元ページのサイト内パス)も入力する
- ステータスコードを選ぶ:ドメイン移行や恒久的な変更は 301、一時的なキャンペーンページは 302
- コードをコピーする。冒頭のコメントに、意図との違いが書かれています
よくある質問
- 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 のファイルに入り、そこにあるコードと同じ言語で読まれるからです。英語のコードの中に一行だけ別の言語のコメントがあると、次にそのファイルを開く人(おそらくあなた自身)がそこで少し立ち止まります。このページ上のもの —— 選択肢、エラー、説明 —— はすべて表示言語に従います。
- アドレスに疑問符・日本語・空白が入っていても大丈夫ですか?
- 疑問符・等号・&・日本語は問題ありません。そのまま生成コードに入ります。空白・引用符・バックスラッシュ・山括弧は拒否し、先にパーセントエンコードするよう促します。これらの文字のエスケープ規則は十一種類の言語でそれぞれ異なり、どれか一つを選ぶのは賭けです。外したときに出るのは壊れた構文で、しかもエラーが出るのはこの画面ではなくあなたのプロジェクト側です。
- 入力したアドレスは送信されますか?
- いいえ。アドレスとステータスコードはブラウザのメモリ上で文字列として連結されるだけで、ページは一切リクエストを送りません。オフラインでも動作します。
関連ツール
自動更新コード生成
Webページを自動更新させるコードを生成します。meta タグ、JS タイマー(カウントダウン付き)、Refresh ヘッダー、React / Vue に対応。
HTML ↔ JS
WebHTML を JS の文字列リテラルへエスケープ(`</script>` の分断、引用符・改行の処理つき)。逆に、エスケープされた文字列を HTML に戻すこともできます。
HTTP ステータスコード
WebHTTP ステータスコードの検索。番号から意味を、キーワードから番号を引けます。1xx〜5xx の分類・利用場面・確認のポイント付き。すべてブラウザ内で処理します。
URL 解析
WebURL を解析し、スキーム・ホスト・ポート・パス・クエリパラメータ・アンカーに分解します。パラメータは元の値とデコード値を並記。すべてブラウザ内で処理します。
UA 解析
WebUser-Agent を解析し、ブラウザ・バージョン・OS・デバイス種別・エンジンを判定します。判定はパターン照合による概算です。すべてブラウザ内で処理します。
MIME タイプ
Web拡張子から MIME タイプを、MIME タイプから既定の拡張子を検索。js なら text/javascript、image/svg+xml なら .svg が返ります。すべてブラウザ内で処理します。