使用1.5.1中的HistoryLocation的新实现时,rootURL参数现在需要用斜杠结尾。现在,这会给试图访问应用程序且没有尾随斜杠的用户带来问题,因为ember认为它找不到路由。

例如,我的应用程序位于/path/to/app,这是现有用户添加的书签,默认情况下是从我们的服务器端框架(该链接在应用程序URL中创建并带有修饰的斜杠)链接的。

有没有办法

1,在HistoryLocation rootURL中不允许任何斜杠
2.在尝试访问应用程序时不带斜杠的情况下使用路由器转换用户吗?

在我的服务器上,我有一个window.rootURL及其应用程序的根URL,但不带斜杠(存在基于访问资源的动态段)。
在我的路由器中,我有以下内容:

App.Router.reopen({
    location: 'auto',
    rootURL: window.rootURL + '/'
});

我可以运行类似
if (location.pathName == window.rootURL) {
    window.location.assign(window.rootURL + '/');
}

但这将迫使页面重新加载,因为我已经有一个完整的Ember App正在运行,因此似乎不需要该页面。



那么,什么是解决此问题的最佳解决方案?

最佳答案

无需过多考虑,您可以使用replaceState,它不会重新加载页面,但会更新URL以打入 Ember 应用程序。

window.history.replaceState({},"", pathWithSlash);

09-28 07:05