戻るボタン乗っ取りによるGoogleのポリシー違反を避ける方法

Googleが戻るボタン乗っ取りをポリシー違反に

2026年4月13日にGoogleが「戻るボタン」を押しても前のページに戻れないようにする、「戻るボタンの乗っ取り」をポリシー違反とすると発表しました。

今後はポリシーに違反したWebサイトは検索順位の低下や、検索結果に表示されなくなるペナルティが課される可能性があります。

Introducing a new spam policy for "back button hijacking"  |  Google Search Central Blog

戻るボタン乗っ取りのポリシー違反を避ける方法

戻るボタン乗っ取りとは、ブラウザの「戻る」操作をユーザーの意図通りに動作させず、別ページへリダイレクトしたり、同一ページ内に留め続けたりする挙動のことです。

具体的には主に以下の3つの実装が該当します。

  • ユーザーのナビゲーションを妨げる
  • 意図しないページ遷移を引き起こす
  • ブラウザの標準動作を改変する

これらは「不正なリダイレクト」や「欺瞞的な行為」とみなされ、このような実装があるWebサイトは、検索結果に表示されなくなる可能性があるため注意が必要です。

違反になる可能性が高いJavaScriptの処理

1. history.pushStateで無限に履歴を積む

history.pushStateで無限に履歴を積むと戻れなくなります。

JavaScript
setInterval(() => {
  history.pushState(null, '', location.href)
}, 100)

ページA → ページBに遷移させた際に戻るボタンでページAに戻さないようにこのような処理を実装しているWebサイトが存在します。

2. popstateで戻る操作を検知して強制リダイレクト

popstateイベントで戻る操作を検知して強制リダイレクトさせると遷移できなくなります。

JavaScript
window.addEventListener('popstate', () => {
  location.href = '/landing'
})

3. beforeunloadによる戻る操作の妨害

beforeunloadイベントを使用すると、ページ離脱時に確認ダイアログが表示され、OKを押さないと戻れません。

JavaScript
window.addEventListener('beforeunload', (event) => {
  event.preventDefault()
})

beforeunloadは入力フォームなどでよく使用されていますが、以下のように入力の有無で条件分岐せずに常に離脱操作をダイアログで妨害すると、Googleから問題行為としてペナルティを受ける可能性があります。

JavaScript
const isEmail = document.getElementById('email').value

window.addEventListener('beforeunload', (event) => {
  if (!isEmail) return
  event.preventDefault()
})

まとめ

  • 戻るボタン乗っ取りはユーザー体験を大きく損なう
  • Googleのポリシー違反だと検索結果に悪影響が出る
  • pushState、popstate、beforeunloadは適切に使う必要がある
  • 基本は「ブラウザの挙動に任せる」のが最も安全