14

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

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

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

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

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

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

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

Github вопрос: https://github.com/angular/angular.js/issues/15547

+0

использование хэша в URL, идет вразрез с точкой включения html5Mode ... так почему вы используете хэш вообще? Что касается hashprefix, прочитайте документы относительно этого – charlietfl

+2

где-то в маршрутизации (может быть в app.js), вы устанавливаете префикс как этот «$ locationProvider.hashPrefix ('!');». Удалить "!" –

+0

Я нигде не устанавливаю ничего подобного. Я включил 'html5Mode', чтобы избавиться от кодировки'/'(косые черты) в URL-адресах. –

ответ

4

Это называется хэш-бах.

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

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

Существует еще один StackOverflow ответа о том, что:

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

+0

Почему я сталкиваюсь с этими проблемами внезапно? Я работаю над небольшими угловыми приложениями уже год и не сталкивался с этими проблемами. Для меня «#» работал отлично. Старые приложения все еще работают нормально, это проблема с каждым новым приложением, которое я создаю. –

+0

'www.website.com/login' - это, вероятно, то, что вы хотите сделать его более дружественным к поисковой системе. Но я не слишком уверен, почему это просто внезапно добавит взрыва (!). Вы недавно обновили версии? Может быть, попробуйте крошечный образец, запущенный с нуля, чтобы убедиться, что он делает это по умолчанию? –

+1

Да, сэр, это тоже. Похоже на обновление модуля. –