Don't use pushState as it's problematic with relative URLs