什麼,我是什麼讓本地化的網址,如:如何動態添加前綴到AngularJS路線
http://example.com/工程/somepath
http://example.com/GER/somepath
讓我們假裝我們總是知道用戶lang。
angular.module('website', [])
.constant('ROUTES', (function() {
var lang = 'eng'; // just for example
return {
SOME_PATH: '/' + lang + '/somepath'
}
})())
.config([..., '$locationProvider', 'ROUTES', function(..., $locationProvider, ROUTES {
$routeProvider.when(ROUTES.SOME_PATH, {templateUrl: 'pages/some_page.html', controller: 'SomePageController'});
$locationProvider.html5Mode(true);
}])
.run(['$rootScope', 'ROUTES', function ($rootScope, ROUTES) {
$rootScope.ROUTES = ROUTES;
}]);
所以,如果我添加鏈接在HTML中,everithing作品:
<a href="{{ROUTES.SOME_PATH}}">Some path</a>
我之後單擊只是按計劃鏈路路由的工作。 但是,如果我刷新頁面或直接鏈接(「http://example.com/eng/somepath」),我無法到達任何頁面,看到一個404頁面。
你的網址中的'#'在哪裏? http://mysite.com/eng/somepath必須是http://mysite.com/#/eng/somepath,否則瀏覽器將向服務器請求完全不同的URL。只有服務器設置可以爲您重新映射。 – lossleader
@lossleader你不需要'#',因爲'$ locationProvider'將它的html5Mode設置爲true –
是的,這是因爲$ locationProvider.html5Mode(true);在瀏覽器中不支持HTML5模式'#'將存在 –