【问题标题】:How to use $stateprovider without # in URL?如何在 URL 中使用不带 # 的 $stateprovider?
【发布时间】: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


【解决方案1】:

html5mode(true) 和页面重新加载的问题在于,在 HTML 5 模式下,当触发页面重新加载时,浏览器会将完整的 URL 发送到服务器。如果服务器上不存在完整 URL 的资源,则返回错误。 因此,要解决您的问题,您需要在服务器上添加一条规则,以始终发送相同的 .html 文件,无论调用什么 URL。 然后 $stateprovider 将相应地初始化客户端状态。

【讨论】:

  • 我会向你解释这个场景。我们使用 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 错误。请帮忙
【解决方案2】:
猜你喜欢
  • 2015-10-19
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
相关资源
最近更新 更多