Маршруты 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-адрес