注意:这个问题也可以是:
如何在 Java 中支持无 hashbang 客户端 mvc 框架的书签。
我正在将使用的 Angular 应用程序转换hashtags
为html5mode
. 我已经成功设置
$locationProvider.html5Mode(true);
登陆页面 (index.html) 中的所有链接都可以正常工作。
问题是,如果直接引用部分 url,我自然会得到 404,因为服务器端点定义不耦合到客户端定义的路由。
因此,如果没有 HTML5,我们将获得非 SEO 友好的 hashbang,但有了它,我们无法为着陆页(引导 angular 的页面)以外的任何内容添加书签。
如果首先请求默认登录页面(index.html),即 htpp://mydomain.com/ ,为什么它会起作用:
- 浏览器从服务器请求 index.html
- 服务器返回index.html,浏览器加载angular框架
- URL 更改被发送到客户端路由器并加载正确的部分/s。
如果直接从浏览器请求(即) http://mydomain.com/foo ,为什么它不起作用:
- 浏览器从服务器请求 mydomain/foo。
- 资源不存在
- 服务器返回 404
这个故事缺少了一些东西,我只是不知道是什么。这是我能看到的唯一两个答案......
- 这是设计使然。 这是它应该如何工作的吗?用户必须始终登陆客户端 MVC 框架的引导页面(通常是 index.html),然后从那里导航。这并不理想,因为无法保存状态并且无法添加书签……更不用说爬行了。
- 服务器解决方案。 这是否与服务器端技巧有关?例如,在所有请求上,返回 index.html 并立即使用附加上下文调用路由器。如果是这样,这违背了 AngularJS 完全是客户端的目标,并且看起来像是一个 hack。