try {
history.replaceState({/*Объект для запоминания*/}, 'Заголовок', 'Новый адрес');
} catch (z) {
console.log(z);
}
Если вы не собираетесь отслеживать возврат на страницу (например, с помощью кнопки
back), то вместо объекта смело передавайте
null.
Заголовок вообще половина браузеров пока игнорирует, так что и вместо него тоже передавайте
null.
А вот адрес вам нужно собирать самостоятельно.
Update:
Для всех хитрозадых —
невозможно заменить строчку на другую с доменным именем, отличающимся от исходного.