Недавно я обновил приложение, над которым я работал, до последней версии Angular CLI (в настоящее время beta25). Использование ng служит для всех маршрутов.Угловое 2 приложение CLI бросает 404 ошибки после развертывания
Затем я использую ng build -prod, застегиваю каталог dist и загружаю его на свой веб-сервер (в настоящее время размещен на AWS Tomcat). Когда я перемещаю index.html, я использую маршрут по умолчанию, чтобы перейти в «домашний» компонент. Все работает до этого момента. Если я обновить браузер, однако, я получаю 404. Кроме того, любая прямая и глубокая связь навигации я пытаю другие виды в приложении бросить 404, а также (Вот мой app.routing.ts для справки)
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { SolutionComponent } from './solution/solution.component';
import { AssetComponent } from './asset/asset.component';
import { PropertyComponent } from './property/property.component';
export const appRoutes: Routes = [
{
path: 'home',
component: HomeComponent
},
{
path: 'solution',
component: SolutionComponent
},
{
path: 'asset',
component: AssetComponent
},
{
path: 'asset/:solutionId',
component: AssetComponent
},
{
path: 'property/:solutionId',
component: PropertyComponent
},
{
path: 'property',
component: PropertyComponent
},
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
];
Я читал в других сообщениях, что это может быть связано с PathLocationStrategy, и one in particular указал, что мне нужно настроить базовый уровень href следующим образом.
<!doctype html>
<html>
<head>
<base href="./">
Я пробовал развернуть версии приложения с точкой и без нее, и проблема все еще сохраняется. Я немного в тупике. Я читал о людях, имеющих похожие проблемы, но не нашел хорошего документа, документально подтвержденного. Я надеюсь, что кто-то из сообщества Angular 2 может помочь пролить свет на то, что происходит, и дать мне представление о том, как двигаться вперед. Заранее спасибо!
EDIT 1/15/2017: В случае, если это полезно для всех, я хотел повернуть назад и выделить пару вещей, которые мне нужно было сделать, чтобы развернуть мое «законченное» приложение CLI Angular2 в размещенной среде.
Во-первых, чтобы включить Rewrite Valve на Apache Tomcat8 на AWS (довольно стандартный вариант хостинга) Мне пришлось использовать функцию ebextensions ElasticBeanstalk, чтобы поменять местами файл context.xml с включенным клапаном перезаписи Tomcat. Файл сервера update.config выглядел как это для меня:
container_commands:
replace-config:
command: cp .ebextensions/context.xml /etc/tomcat8/context.xml
Во-вторых, URL Rewrite себя. может быть более элегантный способ сделать это, что не произошло со мной еще, но мой rewrite.config в настоящее время выглядит следующим образом:
# match requests for basic resource files and pass them through without substitution
RewriteCond %{REQUEST_URI} ^.*\.(css|js|jpg|png|ico|woff2|woff|ttf).*$
RewriteRule ^.*$ - [L]
# app-specific rules
# match app routes and redirect to index.html
RewriteCond %{REQUEST_URI} ^.*\/home.*$ [OR]
RewriteCond %{REQUEST_URI} ^.*\/solution.*$ [OR]
RewriteCond %{REQUEST_URI} ^.*\/asset.*$ [OR]
RewriteCond %{REQUEST_URI} ^.*\/property.*$
RewriteRule ^.*$ /index.html [L]
Вам нужно настроить переписывание URL на свой сервер, увидев сообщение в день или около того, не может его найти. – 12seconds
просто без. и если у вас есть приложение в папке, где вы его создаете, попробуйте somthing like или –
см. этот ответ http: // stackoverflow.com/questions/41519810/refresh-page-got-404-only-happen-when-using-dist-folder/41523241 # 41523241 – Sebastian