リダイレクト

location.href location.replace location.assign

JavaScriptでページを別のURLへ遷移させます。履歴への記録の有無や用途によって使い分けます。

デモ:カウントダウンリダイレクト

コード例

js
// 即時リダイレクト(履歴に残る)
location.href = 'https://example.com';
location.assign('https://example.com'); // 同じ

// 履歴を残さないリダイレクト(戻れない)
location.replace('https://example.com');

// 現在のページをリロード
location.reload();

// location のプロパティ
location.href;       // "https://example.com/path?q=1#hash"
location.protocol;   // "https:"
location.host;       // "example.com:8080"
location.hostname;   // "example.com"
location.port;       // "8080"
location.pathname;   // "/path"
location.search;     // "?q=1"
location.hash;       // "#hash"
location.origin;     // "https://example.com:8080"

// 遅延リダイレクト
setTimeout(() => {
  location.href = '/new-page';
}, 3000);

// ユーザー確認後にリダイレクト
if (confirm('このページを離れますか?')) {
  location.href = '/other';
}

// 認証後のリダイレクト(ログインページのパターン)
const returnTo = new URLSearchParams(location.search).get('returnTo') ?? '/';
location.replace(returnTo);

比較:location.href vs location.replace

観点location.href(assign)location.replace
履歴への記録✅ 残る(戻れる)❌ 残らない(戻れない)
使いどころ通常のページ遷移ログイン後、エラーページからの復帰
ボタンクリックで別ページへ認証リダイレクト、メンテナンスページ

⚠️ オープンリダイレクト(セキュリティ)

URLパラメータをそのままリダイレクト先に使うのは危険です。必ず検証を行ってください。

js
// ❌ 危険:ユーザー入力をそのまま使う
const returnTo = params.get('returnTo');
location.href = returnTo; // 外部サイトへ誘導される可能性

// ✅ 安全:同一オリジンのみ許可
const returnTo = params.get('returnTo') ?? '/';
const url = new URL(returnTo, location.origin);
if (url.origin === location.origin) {
  location.href = url.pathname + url.search;
} else {
  location.href = '/'; // フォールバック
}

🤖 AIプロンプトテンプレート

以下のようなJavaScriptのページ遷移・リダイレクトに関するサンプルコードを生成してください:
- location.href / location.assign / location.replaceの使い分けと違い
- location.replaceで履歴に残さずリダイレクトする認証後のパターン
- setTimeoutを使った遅延リダイレクトの実装
- URLSearchParamsを使ったreturnToパラメータの安全な処理
- オープンリダイレクト脆弱性を防ぐ同一オリジン検証の実装

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。