为什么 pushState() 不适用于干净的 URL?

why pushState() does not work for clean URLs?

我有两种URL:

  1. 参数 URL 喜欢 www.example.com/page.php?test=argument
  2. 参数URL(干净URLs)喜欢www.example.com/classname/methodname/arg1/arg2

现在我需要使用 pushState(); 来替换新的 URL。对于 参数 URL 它也有效,但问题是对于 参数 URL.

这是我的代码:

var db    =  'database';
var word  =  'hello';
window.history.pushState("object", "title", "page.php?s="+db+"&q="+word);

参数的输出URL(这很好)

www.example.com/page.php?test=argument                                  // Current URL
www.example.com/page.php?s=database&q=hello                             // New URL

参数的输出 URL:

www.example.com/classname/methodname/arg1/arg2                          //Current URL
www.example.com/classname/methodname/arg1/page.php?s=database&q=hello   // New URL

虽然我想要这个(对于参数和参数URL)

www.example.com/page.php?s=database&q=hello

如何为参数 URL 修复它?换句话说,是否可以在推送之前删除所有参数? (在追加之前删除当前参数)

我假设 pushState 支持 cwd(当前工作目录)。尝试在前面加上前导斜杠 /,因此:

window.history.pushState("object", "title", "/page.php?s="+db+"&q="+word);