使用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);