Предлагаю вашему вниманию решение, которое на мой взгляд может помочь в решении данного вопроса без углубления в кучу теории.

Пример подмены url страницы по клику на ссылку:

Пример html кода с ссылкой

<a href="/test" onclick="dynamic_change_url('/test');return false;">site.com/test</a>

JavaScript функция, в которой происходит подмена URL страницы.

function dynamic_change_url(link){
    window.history.pushState("", "", link);
    window.history.replaceState("", "", link);
}

Если нужно заменить информацию на странице, то можно в функцию dynamic_change_url дописать ajax запрос.

Данное решение использовалось в реальном проекте. Удачи в реализации.