I can't remove the # symbol in IE9. I searched for an answer but didn't find a fix.
This always redirects to
http://myhost.com:8080/#/website/
and shows this description:
The requested resource is not available.
locationprovider.html5mode(true)
is not working.
The same route is working in FireFox and shows
http://myhost.com:8080/website/
How can I rectify this?
IE9 does not have html5 history api support, that's why it's appending # to the url, removing # will not solve your problem
$location Documentation
See "Hashbang and HTML5 modes"
Basically, html5 mode uses History API
when the browser supports it, and falls back to hashbang(#
) when it is not supported.
You cannot "just" remove "#" in a browser without History API. Because when you change the url, the browser would then try to force a reload, breaking the flow.
In fact we can not remove that, but we can make it work smoothly
RouterModule.forRoot(ROUTES, { useHash: Boolean(history.pushState) === false });
Using window.location.hash = '/'
solved my problem.
if (window.history && window.history.pushState) {
$locationProvider.html5Mode(true);
}
else {
window.location.hash = '/' // IE 9 FIX
$locationProvider.html5Mode(true);
}