Avevo l'impressione che Angular avrebbe riscritto gli URL che compaiono negli attributi href dei tag anchor all'interno di tempaltes, in modo tale che funzionino sia in modalità html5 che hashbang. La documentazione per il servizio di localizzazione sembra indicare che HTML Link Rewriting si occupa della situazione di hashbang. Mi aspetterei quindi che quando non fossero in modalità HTML5, gli hash sarebbero stati inseriti, e in modalità HTML5 no.
Tuttavia, sembra che non sia in corso alcuna riscrittura. L'esempio seguente non mi consente di cambiare la modalità. Tutti i collegamenti nell'applicazione dovrebbero essere riscritti a mano (o derivati da una variabile in fase di esecuzione. Devo riscrivere manualmente tutti gli URL a seconda della modalità?
Non vedo alcuna riscrittura degli URL lato client in corso in Angular 1.0.6, 1.1.4 o 1.1.3. Sembra che tutti i valori di href debbano essere anteposti con # / per la modalità hashbang e / per la modalità html5.
C'è qualche configurazione necessaria per causare la riscrittura? Sto leggendo male i documenti? Fare qualcos'altro sciocco?
Ecco un piccolo esempio:
<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>
Addendum: nel rileggere la mia domanda, vedo che ho usato il termine "riscrittura" senza un'abbondanza di chiarezza su chi e quando volevo fare la riscrittura. La domanda è su come fare in modo che Angular riscriva gli URL quando esegue il rendering dei percorsi e come farlo interpretare i percorsi nel codice JS in modo uniforme tra le due modalità. Si tratta non di come per causare un server web per fare compatibile con HTML5 riscrittura delle richieste.