JavaScript リダイレクトとは、 JavaScript のコード (window.location.href や window.location.replace()) を使ってページ遷移を実行する手法です。クライアントサイドリダイレクトの一種で、条件分岐による動的なリダイレクトが可能です。
JavaScript リダイレクトの最大の利点は、ユーザーのデバイス、ブラウザ、言語設定、 Cookie の有無などの条件に基づいて、リダイレクト先を動的に決定できる点です。サーバーサイドリダイレクトでは実現しにくい複雑な振り分けロジックを、クライアントサイドで柔軟に実装できます。
一方で、 SEO 上のデメリットがあります。 Google は JavaScript を実行してページをレンダリングしますが、サーバーサイドリダイレクト (301/302) ほど確実にはリダイレクトを認識できません。 Google の公式ドキュメントでも「可能な限りサーバーサイドリダイレクトを使用してください」と推奨されています。また、 JavaScript が無効な環境 (一部のボット、アクセシビリティツール) ではリダイレクトが機能しません。
window.location.href と window.location.replace() の違いも実務上重要です。 href はブラウザの履歴にリダイレクト元のページを残すため、ユーザーが「戻る」ボタンを押すとリダイレクト元に戻り、再びリダイレクトされるループが発生します。 replace() は履歴を上書きするため、この問題を回避できます。リダイレクト目的では replace() を使うのが正解です。関連書籍は Amazon でも探せます。