如何从AngularJS路由/ URL中删除#标签?

时间:2015-05-22 02:59:22

标签: javascript angularjs

我的网站的网址是这样的: http://example.com/#/myitems

我希望我的用户能够输入 http://example.com/myitems

我根据有关此主题的许多文章尝试了以下内容:

locationProvider.html5Mode({
    enabled: true,
    requireBase: false
});

这似乎部分有用.RSS不再有主题标签,但是,如果我输入http://example.com/myitems,它就不会加载页面。相反,如果我输入http://example.com/#/myitems,它会加载页面,并将网址重写为http://example.com/myitems

所以,我仍然想弄清楚如何让我的用户能够在没有主题标签的情况下输入网址,并且仍然可以加载页面。

1 个答案:

答案 0 :(得分:0)

我解决了使用push API启用服务器的同样问题。基本上角度在客户端呈现页面并通过#找到确切的路线。您可以启用html5模式删除#

  $locationProvider.html5Mode({
    enabled:true,
    requireBase: false
});
  

请记住,不要忘记在服务器端启用推送API支持。只需添加

    //To suport push API 
    // Just for DEMO in your case it may be different
app.use('/admin/*', function(req,res){
  var user = req.session.user;
   res.render("adminView",{user:user});
});

这里当您在没有#tag的情况下硬刷新或直接输入浏览器。服务器将呈现主页(索引)页面并加载您所需的所有文件。之后,angular将为您处理所有路由,因为您已启用html5模式,因此不再需要在URL中添加#。