2016-01-26 18 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

我沒有線索。我相信你現在可以很容易地找到一些東西,知道你在找什麼。最糟糕的情況是,你可以在這裏開始一個新的問題。 –