使用1.5.1中的HistoryLocation的新实现,rootURL参数现在需要一个尾部斜杠。对于试图访问应用程序但没有尾部斜杠的用户而言,这会导致问题,因为ember认为它无法找到路径。
例如,我的应用程序位于/path/to/app
,这是现有用户已添加书签并默认链接到我们的服务器端框架(在应用程序网址中创建带有修剪后的斜杠)。
有没有办法,
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应用程序运行,所以似乎不需要它。
由于此应用程序与我们的代码库中的一些Ember应用程序共享组件,并且rootURL中存在动态段,因此创建仅重定向的路由没有多大意义(至少是IMO)。
那么,这个问题的最佳解决方案是什么?
答案 0 :(得分:1)
如果不加思索,可以使用不会重新加载页面的replaceState
,但会更新网址以点击您的余烬应用。
window.history.replaceState({},"", pathWithSlash);