Обновить Приложение браузера Angular не работает.выдавая ошибку 404 при развертывании приложения в apache tomcat - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь выяснить, как настроить сервер Apache Tomcat для обслуживания угловых приложений при обновлении страницы.

Маршрутизация будет работать только при нажатии кнопки, но при вводе пути вручную или при обновлении страницызатем выдает ошибку 404.

HTTP-статус 404 - не найден

1) Создайте угловое приложение с:

ng build --prod --base-href ./

2)Также я добавил правило перезаписи в Apache Tomcat

В $ ApacheLocation / conf / context.xml

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

В $ ApacheLocation / conf / server.xml

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

Но это не работает для меня.

Буду признателен за любую помощь.

Ответы [ 4 ]

0 голосов
/ 07 марта 2019

Вы можете использовать HashLocationStrategy, как показано ниже в app.module.ts

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

Используя стратегию определения местоположения хэша, контекст вашего приложения и маршруты будут разделены хешем (#), как в http://localhost:4200/myapp/#/route.

Таким образом, ошибка 404 будет устранена.у нас также есть PathLocationStrategy, но я не смог заставить его работать.

0 голосов
/ 21 февраля 2019

У меня тоже была такая же проблема.Позвольте мне рассказать, как я решил проблему.

создайте папку WEB-INF в папке вашего проекта.и создайте файл rewrite.config.

/ WEB-INF / rewrite.config

RewriteCond %{SERVLET_PATH} !-f
RewriteRule ^/(.*)$ /index.html [L]
0 голосов
/ 22 февраля 2019

Я получил решение своего вопроса и решил проблему.

Вот шаг, который, как я решил проблему.

1) Создан "WEB-INF / web.xml""в моей угловой папке src путь следующий:

Your_Folder/src/WEB-INF/web.xml

2) В web.xml я добавил следующие строки,

<web-app> 
    <error-page> 
        <error-code>404</error-code> 
        <location>/index.html</location> 
    </error-page> 
</web-app>

3) Добавить внешнюю папку в angular.jsonтак что при сборке приложения оно будет доступно в папке dist,

In angular.json

"assets": [ "src/assets","src/favicon.ico","src/WEB-INF" ]

4) Создайте приложение с помощью следующей команды:

ng build --prod --base-href=/myApp/

5) Переименуйте папку dist с base-href name

6) Скопируйте папку dist или base-href и вставьте в

apache-tomcat-8.5.37/webapps

7) Запустите tomcat и вашприложение будет работать даже после обновления браузера.

0 голосов
/ 21 февраля 2019

Я не эксперт по Apache, но вот что я нашел.Добавьте правило перезаписи в файл .htaccess, как показано

RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html

Подробнее читайте в https://ngmilk.rocks/2015/03/09/angularjs-html5-mode-or-pretty-urls-on-apache-using-htaccess/ или https://angular.io/guide/deployment#fallback-configuration-examples

...