У меня сложилось впечатление, что Angular переписывает URL-адреса, которые появляются в атрибутах href тегов привязки внутри шаблонов, так что они будут работать либо в режиме html5, либо в режиме hashbang. Документация на услуги определения местоположения , кажется, говорят , что HTML Link Rewriting заботится о ситуации hashbang. Таким образом, я ожидаю, что когда не в режиме HTML5, будут вставлены хэши, а в режиме HTML5 - нет.
Тем не менее, кажется, что переписывание не происходит. Следующий пример не позволяет мне просто изменить режим. Все ссылки в приложении должны быть переписаны вручную (или получены из переменной во время выполнения. Требуется ли вручную переписывать все URL-адреса в зависимости от режима?
Я не вижу переписывания URL на стороне клиента в Angular 1.0.6, 1.1.4 или 1.1.3. Кажется, что все значения href должны начинаться с # / для режима hashbang и / для режима html5.
Есть ли какая-то конфигурация, необходимая для перезаписи? Я неправильно читаю документы? Делать что-то еще глупо?
Вот небольшой пример:
<head>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.js"></script>
</head>
<body>
<div ng-view></div>
<script>
angular.module('sample', [])
.config(
['$routeProvider', '$locationProvider',
function ($routeProvider, $locationProvider) {
//commenting out this line (switching to hashbang mode) breaks the app
//-- unless # is added to the templates
$locationProvider.html5Mode(true);
$routeProvider.when('/', {
template: 'this is home. go to <a href="https://stackoverflow.com/about"/>about</a>'
});
$routeProvider.when('/about', {
template: 'this is about. go to <a href="https://stackoverflow.com/"/>home</a'
});
}
])
.run();
</script>
</body>
Приложение: перечитывая мой вопрос, я вижу, что использовал термин «переписывание» без излишней ясности в отношении того, кто и когда хотел переписать. Вопрос заключается в том, как заставить Angular переписывать URL-адреса при рендеринге путей, и как заставить его интерпретировать пути в коде JS равномерно в двух режимах. Речь идет не о том, как заставить веб-сервер выполнять совместимое с HTML5 переписывание запросов.