Префикс URL хэш-бэнг (#!/) Вместо простого хеша (#/) в Angular 1.6
Мои URL-адреса в проекте AngularJS изменились с localhost:3000/admin#/
в localhost:3000/admin#!/
так как в последний раз я работал над моим проектом...
В Интернете ничего не найдено, кто-то знает, что это?
4 ответа
Это новинка от AngularJS 1.6, в которой добавлен новый префикс хеша.
Из-за aa077e8, по умолчанию используется хэш-префикс для
$location
URL-адреса хэш-банга изменились с пустой строки (''
) на ура ('!'
). Если ваше приложение не использует режим HTML5 или работает в браузерах, которые не поддерживают режим HTML5, и вы не указали свой собственный хэш-префикс, то URL-адреса на стороне клиента теперь будут содержать!
префикс. Например, а неmydomain.com/#/a/b/c
URL станетmydomain.com/#!/a/b/c
,
Источник здесь для получения дополнительной информации.
Если вы хотите удалить этот префикс, добавьте этот код в вашу конфигурацию:
appModule.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]);
Каждый предлагает удалить префикс, но вы также можете просто добавить !
на клиентские URL-адреса (если вы не используете режим HTML5, что вы, вероятно, делаете, если вы здесь).
Поэтому в ваших клиентских файлах обновите URL-адреса следующим образом:
#/foo/bar
> #!/foo/bar
В Angular 1.6.0 стандартное значение hashPrefix было изменено на !
, Смотрите соответствующий коммит и запись в журнале изменений.
В моей ситуации angular 1.6 добавил хэштег в таком виде: http://localhost:52245/#/callback#code=BD55C7FD4F129A9CAC1506E225EF9149
Но мне это нужно было в таком виде: http://localhost:52245/callback#code=BD55C7FD4F129A9CAC1506E225EF9149.
Я потратил несколько дней, пока не нашел решение. Поэтому добавил эту конфигурацию в frondEnd web.config в разделе <system.webServer>:
<rewrite>
<rules>
<rule name="angular cli routes" stopProcessing="true">
<match url=".*"/>
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true"/>
</conditions>
<action type="Rewrite" url="/"/>
</rule>
</rules>
</rewrite>
После этого все работает ок