为什么 history.pushState() 破坏了我的导航功能?

Why is history.pushState() breaking my navigation functionality?

我正在使用 history.pushState() 来显示 URL,它指示当前显示的动态内容(文章)。

如果我 return 查看一些动态内容后转到我的主页 (index.html),然后尝试访问 index.html 以外的其他页面,我的导航 link 坏了。

On mysite.com/articles whenever a new article is chosen I call history.pushState(null, null, '/articles/' + <articleID>);.正如我所料,这可以正常工作。显示的URL变成mysite.com/articles/articleID.

当前行为:

此时,如果我单击导航 link 返回 index.html,页面成功更改为 index.html,但显示的 URL 变为我的站点。com/articles/index.html

预期行为

显示的URL应该变成mysite.com或mysite.com/index.

我的问题也是:

  1. 我使用 history.pushState();
  2. 的方式
  3. 我的导航 link 的配置方式?

您的通用重定向方法将所有内容重定向到 /articles/<articleID>,包括 link 到主页(正如您提到的 ...articles/index.html)。

虽然您的应用出于某种原因可以解析 articles/index.html 到主页(我不确定为什么)。从现在开始,所有相对 link(不以 / 开头)都将相对于当前路径 - /articles/index.html.

为了解决这个问题,您应该从通用重定向机制中排除主页 links 并重定向到 /.