2016-01-26 21 views
1

所以,我对AngularJS来说很新,我正尝试在我的应用程序中使用AngularJs ngRoute。当url输入时AngularJS路由不起作用

它所有的工作顺利,当我开始在应用主页:

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格林下面说,我需要配置Web服务器返回的index.html所有网页下方

http://localhost:8080/appName 

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

+0

我想我们需要更多的信息 - 至少是$ routeProvider配置和你正在使用的特定的URL。 – Beartums

+1

也许它会帮助你:http://stackoverflow.com/questions/22739455/htaccess-redirect-for-angular-routes –

+0

我已经更新了问题,以显示基本的$ routeProvider设置,以及有问题的网址 –

回答

2

当您使用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页面。

+0

谢谢 - 这很有意义。我在glassfish4服务器上托管该网站。我到底需要配置这个? –

+0

我没有线索。我相信你现在可以很容易地找到一些东西,知道你在找什么。最糟糕的情况是,你可以在这里开始一个新的问题。 –