Угловое обновление на сервере возвращает ошибку 404 - сервер apache использует .htacess - PullRequest
0 голосов
/ 03 июля 2019

Я построил свое угловое приложение с помощью команды: ng build --base-href ./ --prod (я также пробовал ng build --base-href /index --prod & ng build --base-href ./index --prod & ng build --prod).Затем я помещаю содержимое папки dist, созданной на моем сервере Apache.

Когда я перехожу с главной страницы на другую страницу с помощью панели навигации, она работает нормально.Это устанавливается с помощью router в приложении.Но я нажимаю обновить, тогда я получаю Error 404.Я изучил это и прочитал множество вещей, чтобы попробовать, я прочитал длинную ветку git, пробуя много разных комбинаций.

Я создал .htaccess в том же корне, что и index.html для моеговеб-страница.

Я видел это много раз, и поэтому мой .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

Почему я все еще получаю ошибку 404?Я неправильно строю приложение или в .htaccess что-то отсутствует, что мне не хватает?

Если вам нужен еще какой-нибудь код из моего приложения, пожалуйста, дайте мне знать, и я добавлю его, я не хотелдобавьте код, который может оказаться бесполезным.

РЕДАКТИРОВАТЬ Это мое app-routing.module.ts:

import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { SettingsComponent } from './settings/settings.component';


const routes: Routes = [
  { path: '', component: HomeComponent },
  { path: 'settings', component: SettingsComponent }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

1 Ответ

0 голосов
/ 03 июля 2019

Я нашел другую версию файла .htaccess, чтобы попробовать, которая выглядела так:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/?(api)/
RewriteRule .* index.html [PT,L]

И я установил <base href="./"> в index.html после сборки.Или создайте его, используя ng build --base-href ./ --prod

...