所以我设置了一个HTML5单页面应用程序,它运行良好。该页面位于/App/
,当某个内容转到内容时,它看起来像/App/Content/1234
。
一个问题:如果用户刷新页面,则服务器无法找到该URL,因为它实际上并不存在。如果我将它们发送到/App/#/Content/1234
,它们就是金色的,但这样做的最佳方法是什么?我在/ App。
在~/App/(.*)
下全局捕获任何请求并将其重定向到~/App/#/$1
的最佳方法是什么?
在MVC中注册的唯一路线是标准的OOTB路线。
答案 0 :(得分:4)
听起来您的服务器没有将网址重新写入应用的基本网址。
Web服务器上所需的URL重写与服务器有关。对于Apache,你可以使用mod_rewrite。
相反,将Angular切换为“Hashbang模式”(默认值),这样url将全部存储在url中的#后面的本地状态。
我不希望我的应用程序需要更改服务器配置,因此我建议使用hashbang模式。
见AngularJS docs。请参阅“Hashbang和HTML5模式”部分HTML5模式部分描述了支持URL的HTML5模式所需的所有配置问题。
答案 1 :(得分:2)
这位了不起的老兄介绍了如何解决此问题here。
简而言之: