Префикс 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>

После этого все работает ок

Другие вопросы по тегам