Что я, что делает локализованы URLs как:Как добавить динамический префикс AngularJS маршрутов
http://example.com/анг/somepath
http://example.com/гер/somepath
Позвольте притвориться, что мы всегда знаем пользовательский язык.
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/rus/somepath должен быть http://mysite.com/#/eng/somepath или браузер будет запрашивать совершенно другой URL-адрес с сервера. Только настройки сервера могут перенаправить обратно для вас. – lossleader
@lossleader Вам не нужно '#', поскольку '$ locationProvider' имеет значение html5Mode, равное true –
Да, это потому, что $ locationProvider.html5Mode (true); В браузере без поддержки html5 режим «#» будет существовать. –