Fiquei com a impressão de que o Angular reescreveria URLs que aparecem nos atributos href de tags âncora em tempaltes, para que funcionassem no modo html5 ou no hashbang. A documentação do serviço de localização parece indicar que a Reescrita de Link HTML cuida da situação do hashbang. Assim, eu esperaria que, quando não estivesse no modo HTML5, os hashes fossem inseridos e, no modo HTML5, não.
No entanto, parece que nenhuma reescrita está ocorrendo. O exemplo a seguir não me permite apenas alterar o modo. Todos os links no aplicativo precisariam ser reescritos manualmente (ou derivados de uma variável em tempo de execução. É necessário reescrever manualmente todos os URLs, dependendo do modo?
Não vejo nenhuma reescrita de URL do lado do cliente no Angular 1.0.6, 1.1.4 ou 1.1.3. Parece que todos os valores href precisam ser anexados com # / para o modo hashbang e / para o modo html5.
Existe alguma configuração necessária para causar a reescrita? Estou interpretando mal os documentos? Fazendo algo mais bobo?
Aqui está um pequeno exemplo:
<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>
Adendo: ao reler minha pergunta, vejo que usei o termo "reescrever" sem muita clareza sobre quem e quando eu queria reescrever. A questão é sobre como fazer com que o Angular reescreva os URLs quando renderizar caminhos e como interpretar os caminhos no código JS de maneira uniforme nos dois modos. É não sobre como fazer com que um servidor web para fazer HTML5 compatível com reescrita de pedidos.