【问题标题】:AngularJS Routing not working when url typed输入url时AngularJS路由不起作用
【发布时间】:2016-05-03 08:02:32
【问题描述】:

所以,我对 AngularJS 还是很陌生,我正在尝试在我的应用程序中使用 AngularJs ngRoute。

当我在应用程序主页启动时,一切顺利:

http://localhost:8080/appName/

当我从这一点开始点击链接时,它可以顺利运行。

但是,当我输入一个我知道存在/有效的 URL 时,它会给我一个 404 错误。如果我通过使用应用程序而不是 url 转到该链接,它加载正常,即使它具有相同的 url。

Eg. http://localhost:8080/appName/search 

将给出 404,即使这是默认重定向的相同 url。

确实,通过键入位置来加载的唯一 url 是我上面提到的基本 URL。

我的 app.js 看起来像这样:

app.config( ['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){
  $routeProvider
    .when("/search", {
      templateUrl: "search.html",
      controller: "SearchController"
    })
  .when("/results", {
    templateUrl: "results.html",
    controller: "ResultsController"
  })
  .when("/browse", {
    templateUrl: "browse.html",
    controller: "BrowseController"
  })
  .otherwise({redirectTo:"/search"});

//This gets rid of the # on the urls to the templates  
$locationProvider.html5Mode(true);

}]);

我将它托管在 glassfish4 服务器上。

关于 ngRoute 的工作原理,我是否有明显的遗漏/误解?是否有一些我缺少的设置?

感谢所有帮助...

编辑 1: 正如下面的@Matthew Green 所说,我需要配置网络服务器以返回下面所有页面的 index.html

http://localhost:8080/appName

我知道我在这里完全密集,但是这是在哪里配置的?我将代码托管在 MAVEN Jersey-Quickstart-Webapp 中。

【问题讨论】:

  • 我认为我们需要更多信息——至少 $routeProvider 配置和您正在使用的特定 url。
  • 我已经更新了问题以显示基本的 $routeProvider 设置,以及有问题的 url

标签: angularjs angular-routing


【解决方案1】:

当您使用 ngRoute 时,您正在使用 javascript 来处理路由以创建 SPA。这意味着您需要点击一个加载路由的真实页面,以便您的应用程序知道要路由到哪个页面。

例如,您的 http://localhost:8080/appName/ 应该路由到您的 index.html,其中包含用于路由的 javascript。加载该页面后,它知道如何处理应用程序中的链接。但是,如果您要直接访问http://localhost:8080/appName/pageName,您还需要它来加载 index.html,因为它是加载您的路由的那个。加载路由后,它应该将您定向到应用程序中的正确页面。如果没有适当的重定向,http://localhost:8080/appName/pageName 不是真实页面,因此会正确返回 404。

知道了这一点,您必须弄清楚您必须为http://localhost:8080/appName/ 下的所有内容配置适当的重定向以转到您的 index.html 页面。

【讨论】:

  • 谢谢 - 这很有意义。我在 glassfish4 服务器上托管该站点。我究竟需要在哪里进行配置?
  • 我不知道。我相信你现在可以很容易地找到一些东西,因为你知道你在寻找什么。最坏的情况,您可以在 SO 上提出一个新问题。
猜你喜欢
  • 2016-11-04
  • 2018-08-16
  • 2020-10-02
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
相关资源
最近更新 更多