具有ui.router的AngularJS:URL中的参数如果尾随斜杠则被解释为路径

时间:2015-04-04 16:06:41

标签: angularjs angular-ui-router trailing-slash

在我的带有ui.router的AngularJS应用程序中,如果有一个尾部斜杠,则URL中的参数将被解释为路径。

什么有效:

http://example.com/product/123

什么行不通:

http://example.com/product/123/

在控制台中,我看到AngularJS正在寻找所有文件 http://example.com/product/123/而不是http://example.com/product

谷歌告诉我有一个选项$urlMatcherFactory.strictMode(false)我不知道如何让它发挥作用。而且我仍然不确定这是否会有所帮助。

有类似经历的人吗?

1 个答案:

答案 0 :(得分:0)

我对$urlMatcherFactory.strictMode(false)没有运气,我认为vhost别名和条件htaccess RewriteBase的混合导致了一些我在五小时内无法弄清楚的冲突。

我现在做了什么,这很有效:

在index.html的最顶部,我放了这个脚本:

var url = window.location.href;
if (url.slice(-1) == '/') {
    window.location.href = url.substring(0, url.length - 1);
}

因此,如果用户或浏览器添加了一个尾部斜杠,页面将重新加载,而不会显示尾部斜杠。

知道这件事很好,仍然希望能够抓住罪魁祸首并在某一天解决它而不是在它周围航行。