web-dev-qa-db-fra.com

Angular contiennent #! Dans l'url au lieu de #

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

15
Samarth Agarwal

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:

Faire des liens comme Twitter, Hash-Bang #! URL

3
Alexis Wilke