У меня создалось впечатление, что Angular будет переписывать URL-адреса, которые появляются в атрибутах href тегов привязки в tempaltes, так что они будут работать в режиме html5 или режиме hashbang. Документация для службы определения местоположения, похоже, говорит о том, что переписывание HTML Link заботится о ситуации хеш-бэнга. Поэтому я ожидал бы, что когда не в режиме 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="/about"/>about</a>'
});
$routeProvider.when('/about', {
template: 'this is about. go to <a href="/"/>home</a'
});
}
])
.run();
</script>
</body>
Приложение: при повторном чтении моего вопроса я вижу, что я использовал термин "переписывание" без обилия ясности относительно того, кто и когда я хотел сделать переписывание. Вопрос заключается в том, как получить Angular, чтобы переписать URL-адреса, когда он отображает пути, и как заставить его интерпретировать пути в JS-коде равномерно в двух режимах. Это не о том, как заставить веб-сервер выполнять HTML5-совместимую переписывание запросов.