This question already has an answer here:
- angularjs 1.6.0 (latest now) routes not working 4 answers
Recently I have noticed that when using ngRoute
module in an AngularJS app, the route contains #!
in the URL, which was earlier just the #
.
For example, www.webiste.com/#/login
becomes www.website.com/#!/login
I have to enable the html5Mode
and also disable the requireBase
which removes the base as a whole using the code,
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
and the URL changes to www.website.com/login
which works fine but is misleading and is not what Angular SPA URLs look like.
If I do not enable the html5Mode
, the URL is encoded and I cannot get around it. So www.website.com/#/login
becomes www.website.com/#!/#%2Flogin
(Notice the later /
is encoded as %2F
).
Is this a change implemented by the developers for some specific purpose? What difference does it make? What changes do I need to make to my app to keep it working? Am I doing something wrong?
Github issue: https://github.com/angular/angular.js/issues/15547