【发布时间】:2016-01-08 06:47:03
【问题描述】:
如何在 URL 中使用 $stateprovider 而没有 #?
如果我们使用$locationprovider.html5mode(true),那么第一次加载正确,但刷新页面后状态未加载并显示错误。
我会向你解释这个场景。我们使用 ASP.NET web api 作为后端服务器,前端是带有 angular.JS 的纯 HTML 应用程序。我们没有遇到后端服务器的任何问题。我们没有关于 api 调用的问题。我将举例说明: www.test.com/#/main/home 使用 $state.go 重定向到 www.test.com/main/home 并完美呈现视图。但是在重定向到 www.test.com/main/home 后,如果我们刷新页面,我们会收到 404 错误。请帮忙
我正在寻找根据使用选择提供 URL。所以我需要为此消除#。
【问题讨论】:
-
$stateProvider在没有#的情况下工作得很好。问题在于您的服务器处理 html5mode 的方式。由于您没有提到您正在使用哪种服务器技术,因此不可能提供完整的答案,但您应该查看此处针对您的特定服务器发布的与 html5mode 相关的许多其他问题,以及 UI-Router html5mode @987654321 的官方文档@. -
@Claies 我会向你解释这个场景。我们使用 ASP.NET web api 作为后端服务器,前端是带有 angular.JS 的纯 HTML 应用程序。我们没有遇到后端服务器的任何问题。我们没有关于 api 调用的问题。我将举例说明: www.test.com/#/main/home 使用 $state.go 重定向到 www.test.com/main/home 并完美呈现视图。但是在重定向到 www.test.com/main/home 后,如果我们刷新页面,我们会收到 404 错误。请帮忙
-
这完全是服务器的问题。当您从 服务器 请求
http://www.test.com/main/home时,那里没有配置路由,这会导致 404。阅读我发布的链接,特别是关于在 ASP.Net C# 中启用重定向的部分。
标签: angularjs html angular-ui-router