angular ui-router,html5模式总是刷新到/

Posted

技术标签:

【中文标题】angular ui-router,html5模式总是刷新到/【英文标题】:angular ui-router, html5 mode always refreshes to / 【发布时间】:2015-06-09 07:07:18 【问题描述】:

我正在尝试在 Angular 中使用 html5mode,以便我可以为 http:/myhost/products 之类的页面添加书签(其中 /products 是由 $stateProviderRef.state(xxx) 定义的路由)。

为此我已经

在我的应用配置中添加了 $locationProvider.html5Mode(true) 在我的 index.html 中添加了 'base href="/"'(带有 )

在 node.js 中将 catch all rewrite 添加到我的 server.js

app.get('*', function(req, res) res.redirect('/'); );

重启节点服务器

所以应用程序启动正常,所有导航正常,我可以转到http://myhost/products,一切正常。

但是,如果此时我按刷新,我将被重定向回索引页面。在我看来,ui-router 要么丢失了路径(/products),要么我错过了配置/设置中的某些内容

我一直在浏览 *** 上的问题,直到眼睛流血为止,但类似问题的所有解决方案都是我已经做过的事情(base=、重定向等)

其他人有这个问题并解决了吗?如果您能分享您的发现,将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

你不应该这样在服务器中重定向

app.get('*', function(req, res)  res.redirect('/'); );

相反,发送相同的 index.html

app.route('/*')
    .get(function(req, res) 
      res.sendFile(path.resolve(app.get('appPath') + '/index.html'));
    );

看看这个生成器了解更多

https://github.com/DaftMonk/generator-angular-fullstack/blob/master/app/templates/server/routes.js

【讨论】:

以上是关于angular ui-router,html5模式总是刷新到/的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS:无法使用 ui-route $state 获取 html5 模式网址

ngRoute (angular-route.js) 和 ui-router (angular-ui-router.js) 模块有什么不同呢?

Angular 2、TypeScript 和 ui-router - 如何获取状态参数

Angular 1.5,ui-router + 资源 + 组件,stateProvider 找不到组件

ngRoute (angular-route.js) 和 ui-router (angular-ui-router.js) 模块有什么不同呢?

ngRoute (angular-route.js) 和 ui-router (angular-ui-router.js) 模块有什么不同呢?