Angular - Внутренняя маршрутизация после сборки не работает - ошибка 404 - PullRequest
0 голосов
/ 05 апреля 2020

Я использую Angular 9.0, и все работает нормально в режиме ng serve -o, но когда я пытаюсь построить проект с использованием ng build, я могу только просматривать страницу root. Когда я пытаюсь go перейти на любую другую страницу, он возвращает ошибку 404, что-то, чего я не испытываю в локальном режиме ng serve. Любые подсказки о том, как решить проблему?

Итак http://www.example.com/ << эта страница открывается нормально, но <a href="http://www.example.com/dashboard" rel="nofollow noreferrer">http://www.example.com/dashboard возвращает 404

Редактировать: для проверки разностного сценария ios, чтобы увидеть, что может быть причиной проблемы, мне удалось определить проблему. Навигация работает нормально, если я использую routerLink, но не работает, если я использую href или window.location.href. Любая идея, почему она взломает sh при использовании href или window.location.href?

1 Ответ

1 голос
/ 05 апреля 2020

ng serve автоматически позаботится о переадресации URL-адресов на index.html.

Следующее дополнение в вашем app.module.ts должно решить вашу проблему.

import { PathLocationStrategy, LocationStrategy } from '@angular/common';

...

providers: [ { provide: LocationStrategy, useClass: PathLocationStrategy } ]

https://angular.io/api/common/PathLocationStrategy

Редактировать:

href - это атрибут по умолчанию, предоставляемый браузерами для навигации (переключения) между страницами, где вся страница будет загружаться повторно, теряя Текущее состояние.

Более подробное объяснение href vs routerLink.

Так что, если вы размещаете свои файлы на сервере Apache, он пытается найти index.html файл в каталоге /dashboard, который не существует, поэтому ошибка 404. Чтобы решить эту проблему, вам придется переписать все ваши трафики c обратно на index.html. Более подробное объяснение переписывает.

...