Angular Route如果不区分大小写,则总是需要斜线

时间:2017-10-19 20:46:23

标签: javascript angularjs asp.net-mvc-5 angular-ui-router

  • 我在IIS上创建了名为SA的虚拟目录,如果键入" Localhost / SA"或" Localhost / Sa /"一切正常,但如果我输入像这样的URL Caseinsensitive" Localhost / Sa"在没有斜线的情况下,最终路线无法返回任何页面。
  • 如果我禁用html5mode,则会找到" 404页面未找到"页。  $ locationProvider.html5Mode(假);

以下是我使用的解决方法:

 $urlMatcherFactory.caseInsensitive(true);
 $urlMatcherFactory.strictMode(true); // or off nothing is work 

 $urlRouterProvider.rule(function ($injector, $location) {
            var path = $location.path(), normalized = path;//.toLowerCase();
            template = path;

            if (path !== normalized) {
               $location.replace().path(normalized);
            }
           }
        });
  • 尝试连接" /"通过添加$ urlRouterProvider.rule到URL的末尾,但它也不起作用,并且无法连接" /"到angular bootstrap之前的URL的末尾。

我已经完成了这个问题,请帮忙。

1 个答案:

答案 0 :(得分:0)

最后,我通过修改Angular bootstrap之前的URL,在scripts标签的_Layout.cshtml文件中找到了解决此问题的方法,如果请求的URL以根应用程序路由结束,则通过向URL添加尾部斜杠(使用baseSiteUrlPath Key) )它工作正常。

   if (window.location.href.substr(-1) != '/' 
        && window.location.href.toLowerCase().endsWith(baseSiteUrlPath.toLowerCase().substr(0, baseSiteUrlPath.length - 1)))
        window.location.href += '/';