### Version 3.0.1 ### Reproduction link [https://codesandbox.io/s/vue-routing-example-mjmxd](https://codesandbox.io/s/vue-routing-example-mjmxd) ### Steps to reproduce Click on "goodbye" Click back in browser Click forward in browser last url is pushed into history ### What is expected? In ensureUrl, we need to pass false instead of true to make sure current (out-of-sync) url is replaced and not pushed to history ### What is actually happening? The next function passes true to the ensureUrl function thus making it push the out-of-sync url to history <!-- generated by vue-issues. DO NOT REMOVE -->