У мене склалося враження, що Angular перепише URL-адреси, які відображаються в атрибутах href анкерних тегів всередині tempaltes, таким чином, щоб вони працювали в режимі html5 або в режимі хешбангу. Документація на послуги визначення місця розташування , здається, говорять , що HTML Link Rewriting піклується про ситуацію hashbang. Таким чином, я б очікував, що, коли не в режимі HTML5, хеші будуть вставлені, а в режимі HTML5 - не.
Однак, схоже, ніякого переписування не відбувається. Наступний приклад не дозволяє мені просто змінити режим. Усі посилання в додатку потрібно буде переписати вручну (або отримати від змінної під час виконання. Чи потрібно мені вручну переписати всі URL-адреси залежно від режиму?
Я не бачу жодного перезапису URL-адреси на стороні клієнта у Angular 1.0.6, 1.1.4 або 1.1.3. Здається, що всі значення href потрібно попередньо встановити в режимі # / для хешбангу та / для режиму 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.