Récemment, j'ai remarqué que lors de l'utilisation du module ngRoute
dans une application AngularJS, la route contient #!
dans l'URL, qui était auparavant juste le #
.
Par exemple, www.webiste.com/#/login
devient www.website.com/#!/login
Je dois activer le html5Mode
et désactiver également le requireBase
qui supprime la base dans son ensemble à l'aide du code,
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
et l'URL devient www.website.com/login
qui fonctionne bien mais est trompeur et n'est pas à quoi ressemblent les URL Angular SPA).
Si je n'active pas le html5Mode
, l'URL est codée et je ne peux pas la contourner. Alors www.website.com/#/login
devient www.website.com/#!/#%2Flogin
(Remarquez la dernière /
est codé comme %2F
).
S'agit-il d'un changement mis en œuvre par les développeurs dans un but précis? Quelle différence cela fait? Quelles modifications dois-je apporter à mon application pour qu'elle fonctionne? Est-ce que je fais quelque chose de mal?
Problème Github: https://github.com/angular/angular.js/issues/15547
Cela s'appelle le hash bang.
Pendant un certain temps, Twitter utilisait la même chose. Il permet les appels AJAX et permet aux moteurs de recherche de connaître votre chemin sans utiliser un chemin "réel". Il est cependant considéré comme obsolète.
https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
Il y a une autre réponse stackoverflow à ce sujet: