1

我有启用 html5mode 的 angularjs 应用程序。

我曾尝试在 IE8 中运行应用程序,但似乎 URL 的前缀是 #! 是不是应该是-后退按钮起作用等等..hashbang模式

我试图在现代浏览器中运行应用程序,似乎历史 api 也可以工作。一切都好。

但是,如果我http://localhost:3000/notes直接在两个浏览器的地址栏中点击,我会从 webrick/rails 应用程序中收到路由错误。我认为 Angular 会接管这个请求并处理它。

正如角度指南所说,我没有在服务器端设置任何东西:

使用这种模式需要在服务器端重写 URL,基本上你必须重写所有指向应用程序入口点的链接(例如 index.html)

这就是我从 webrick 收到路由错误的原因吗?如果我能够设置重写规则它是如何工作的?我想如果我重写类似http://localhost:3000/notes -> http://localhost:3000(如果你愿意,可以索引)“/notes”之类的东西 - 我想跳进去的地方已经消失了,角度应用程序永远不会知道路由..

如果没有办法告诉 webrick 什么以及如何重写。您在开发环境中的表现如何?

十分感谢。

4

1 回答 1

1

您需要将服务器配置为返回与路由相同的/notes数据/。不是重定向(因为这将删除notes)。基本上你需要一个包罗万象的路线,如果它不匹配其他任何东西,它就会返回。或者枚举已知的路由(即 、//notes/other),并让所有这些路由返回相同的文档。那时,角度将检测路径并采取相应措施。

于 2012-12-20T18:09:02.373 回答