Угловая маршрутизация в производстве - htaccess - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть приложение angular 7, где я использую маршрутизацию следующим образом:

const routes: Routes = [
  {path: '', component: HomePageComponent},
  {path: 'privacy', component: PrivacyPageComponent},
  {
    path: '',
    redirectTo: '',
    pathMatch: 'full'
  },
  {path: '**', component: PageNotFoundComponent}
];'

В localhost все работает нормально. Если я наберу в адресной строке браузера:

  • localhost: 4000 / -> Я захожу на домашнюю страницу
  • localhost: 4000 / конфиденциальность -> Я захожу на страницу конфиденциальности

Проблема заключается в том, что я внедряю его в производство (Apache). Я уже отредактировал свой .htaccess, как это предлагается в Angular Docs, вот так.

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

Но в этом случае (конечно) Если я наберу в браузере:

  • localhost: 4000 / -> Я иду на домашнюю страницу
  • localhost: 4000 / конфиденциальность -> я снова захожу на домашнюю страницу

Маршрутизация в основном работает, только если я захожу на домашнюю страницу и щелкаю ссылку с routerLink = "/ privacy". Если пользователь вводит полный URL-адрес непосредственно в адресную строку браузера, я не могу зайти на страницу.

Что я могу сделать, чтобы Angular обслуживал все определенные страницы?

Спасибо!

1 Ответ

1 голос
/ 28 апреля 2019

Я наконец нашел эту статью: http://krasimirtsonev.com/blog/article/apache-htaccess-for-html5-push-state-manipulations

Название статьи совершенно не очевидно, что может решить мою проблему, но в любом случае я выкладываю ее здесь для других людей, которые могут бороться ста же проблема:

В основном я решил отредактировать мой .htaccess, это весь кусок.

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.html
...