Маршруты Angular содержат #! в URL вместо #

Недавно я заметил, что при использовании модуля ngRoute в приложении AngularJS маршрут содержит #! в URL-адресе, который ранее был только #.

Например, www.webiste.com/#/login становится www.website.com/#!/login

Мне нужно включить html5Mode, а также отключить requireBase, который удаляет базу в целом с помощью кода,

$locationProvider.html5Mode({
       enabled: true,
       requireBase: false
});

и URL изменяется на www.website.com/login, который отлично работает, но вводит в заблуждение и не похож на Angular URL-адреса SPA.

Если я не включил html5Mode, URL-адрес закодирован, и я не могу обойти его. Таким образом, www.website.com/#/login становится www.website.com/#!/#%2Flogin (обратите внимание, что более поздняя / кодируется как %2F).

Это изменение, внесенное разработчиками для определенной цели? Что это меняет? Какие изменения необходимо внести в мое приложение, чтобы он работал? Я что-то делаю неправильно?

Проблема Github: https://github.com/angular/angular.js/issues/15547

Ответы

Ответ 1

Он назвал хеширование.

Некоторое время Twitter использовал одно и то же. Он позволяет использовать вызовы AJAX и позволяет поисковым системам узнать ваш путь, не используя "настоящий" путь. Однако он считался устаревшим.

https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

Существует еще один ответ stackoverflow:

Выполнение ссылок, таких как Twitter, Hash-Bang #! URL-адрес