2014-03-29 68 views
1

我想修改我的angularjs應用程序的網址。最初我的網址是http:localhost:8080/a/web/app/index.html#/和http:localhost:8080/a/web/app/index.html#/ next

當我插入以下代碼我app.js

var App =angular.module('App', [ 
    'ngCookies', 
    'ngResource', 
    'ngRoute', 
    ]) 
    .config(function ($routeProvider,$locationProvider) { 
    $routeProvider 
    .when('/', { 
    templateUrl: '/a/web/app/views/main.html', 
    controller: 'ctrl_main' 
    }) 
    .when('/next', { 
    templateUrl: '/a/web/app/views/next.html', 
    controller: 'ctrl_next' 
    });   

    $locationProvider.html5Mode(true); 
    }); 

我的新網址成爲HTTP:本地主機:8080和 HTTP:本地主機:8080 /旁邊。 我的問題是,當我試圖重新加載頁面在http:localhost:8080/next,404未發現錯誤即將到來

回答

1

這是與html5模式的預期。如果您要求它重新加載,瀏覽器會向其地址欄中的URL發送請求。

因此,您需要配置服務器以實際發回您在角度應用程序中使用的所有可收藏URL的index.html頁面。整個頁面將重新加載,角度應用程序將重新啓動,$ route服務將重新啓動,並將調用控制器並顯示爲URL配置的部分。

+0

有沒有什麼辦法來重定向到同一頁面的重裝製造,而不是從服務器的index.html? –

+0

這就是我在我的回答中解釋的。重新閱讀。瀏覽器將從服務器加載/ foo/bar。服務器將發回index.html頁面的內容。角度應用程序將重新加載,路由器將顯示映射到/ foo/bar的應用程序頁面。 –

+0

嗨,當我從服務器發回index.html url時,爲了在/ foo/bar重新加載,就像你說的角度應用程序重新加載一樣,但是現在$ location.path指向/ a/web/app/index .html,not/foo/bar,因此它正在加載默認(.otherwise)路線 –

0

我知道答案是有點過時,但對我來說加入<base>屬性index.html的幫助,例如:

<base href="https://stackoverflow.com/a/web/app/">