Я работаю над угловым проектом с маршрутизацией, и он отлично работает на локальном компьютере. Когда я развертываю то же самое в Apache httpd, при обновлении браузера с любой страницы выдается ошибка «Запрошенный URL-адрес не найден на этом сервере».

0
Manikandan Uthaman 19 Дек 2019 в 22:07
Вы должны переписать все (кроме существующих файлов или папок) в /index.html. Есть много примеров, доступных в Интернете.
 – 
MikeOne
19 Дек 2019 в 23:05
stackoverflow.com/questions/44819308/how- to-route-in-angular-4 Проверьте это, посмотрите, работает ли это.
 – 
Chad K
19 Дек 2019 в 23:35

1 ответ

Комментарии MikeOne и Chad K верны, это один из способов решения этой проблемы.

Во-первых, когда вы создаете приложение для производства ng build --prod, иногда вам нужно изменить base href в index.html, если приложение не находится в корне вашего веб-сервера, я думаю, что это не ваше проблема, но вы могли бы проверить это в любом случае.

После этого предположим, что ваша маршрутизация будет 'http://yourserver/page1/' при перезагрузке приложения. по этому URL-адресу веб-сервер попытается найти несуществующий каталог с именем page1. Предлагаемые решения по комментариям будут работать, используя перезапись мода apache. Это решение будет работать только в том случае, если у вас есть доступ к файлам конфигурации этого сервера или если он использует файлы .htaccess, что иногда не так. Однако, если вы не возражаете против того, чтобы URL-адреса немного отличались, есть другое гораздо более простое решение.

В import из RouterModule, где есть что-то вроде:

RouterModule.forRoot( routes )

Вы можете добавить useHash следующим образом:

RouterModule.forRoot( routes, { useHash: true } )

Затем перестройте свой проект с флагом производства, и теперь URL-адреса будут такими:

http://yourserver/#/page1/

Таким образом, благодаря хешу, приложение будет работать без каких-либо проблем, и единственное, что нужно, - это установить useHash в RouterModule и перестроить ваше приложение.

0
jeprubio 20 Дек 2019 в 00:36