AngularJS “#!” on url

2019-04-21 10:59发布

问题:

someone knows what "#!" Means. on the url?

I was working until then this appears,I had a "#" always in the url and would like to keep it that way. Currently routing is not working anymore,probably because of this url change.

It's part of a business project, i don`t want to change to html5Mode.

I tried to use:

$locationProvider.hashPrefix("");

Even correcting the url in this way routing is having problems

回答1:

Thats called hash-bang.

To fix this use :

    angular.module('yourApp', [])
    .config(['$locationProvider', function($locationProvider) {
        $locationProvider.hashPrefix('');
    }]);

Adding html5Mode would even get rid of the '#' in the url but if you refresh the page, then you would get a 404 error. This can be fixed by configuring your server a bit. For that you might want to check the nice little tutorials :

  1. https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag
  2. https://www.theodo.fr/blog/2017/01/pretty-url-in-angularjs-and-loopback-drop-the/

There is another answer to the hashbang issue in stackoverlow :

Doing links like Twitter, Hash-Bang #! URL's



回答2:

You can use html5Mode in your location provider.

$locationProvider.html5Mode(true);

more info https://scotch.io/tutorials/pretty-urls-in-angularjs-removing-the-hashtag



回答3:

Set html5mode true in your app.config

$locationProvider.html5Mode(true).hashPrefix('*');