По какой-то причине, когда я перенаправляю header("Location")
новая страница сохраняет хэш.
Поэтому, если вы находитесь на example.com/index.html#signup
Я перенаправляю
header("Location: /account.html"); exit;
Но затем он показывает example.com/account.html#signup
Почему это происходит и как я могу остановить его? ie example.com/account.html
Заметка:
Я использую .htaccess для перенаправления file.html
на file.php
RewriteRule ^([a-zA-Z0-9-_.]+)\.html$ $1.php [L]
Простой ответ на вопрос «как остановить его» – указать пустой хэш в заголовке Location
:
header('Location: /account.html#');
Однако это поведение не гарантируется по всем направлениям. Кажется, он работает в WebKit и IE9 в моем быстром тестировании. Тем не менее, вы наткнулись на черную дыру в спецификации HTTP .
Я ищу для ответа, который работает в Firefox. Спустя некоторое время серфинг здесь и там, пока мой кот держит мяуканье, он приводит меня к окончательному решению:
die('<script> window.location='your-url-without-hash';</script>');
Иногда вы хотите зарезервировать хеш, иногда вы этого не делаете, и потому, что кросс-браузер имеет значение, лучше контролировать клиентский браузер, чтобы перезагрузить и убить хэш.