Прежде всего, выдача сообщений об ошибках, если пользователи используют Назад или по какой-либо причине обновляют страницу, является действительно плохой идеей. Вместо этого вы должны прозрачно иметь дело с этим. Подумайте о том, что страница не появляется полностью из-за проблем на уровне транспортировки - единственный вариант, который пользователь может перезагрузить или вернуться назад.
Чтобы ответить на ваш вопрос, вы должны самостоятельно отслеживать навигацию пользователя, то есть на стороне сервера. Забудьте про java-скрипт здесь. Если пользователь посещает веб-сайт, вы можете сохранить эту информацию в сеансе, связанном с пользователем (есть несколько способов сохранить эти уникальные сеансы, и я не буду вдаваться в подробности здесь).
Если вы храните в своих внутренних структурах, какие страницы посетил пользователь в последнее время, легко определить, что страница была посещена дважды, или навигация идет в «неправильном» направлении.
Вы могли бы легко обобщить это (и сделать все это более устойчивым, например, против пользователей, быстро переключающихся между URL-адресами или возвращающихся назад более чем на один шаг одновременно), построив график «разрешенной» навигации и обходя его, пока пользователь посещает веб-сайты.
Правильное поведение, если пользователь совершает «неправильную» навигацию (например, делает шаг назад, перезагружает == посещение дважды), - это вернуть его в нужное русло. Не сообщать об ошибке, он не может сбежать! Поскольку ему не разрешено перезагружаться или возвращаться, у него не осталось вариантов.