Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

404 file not found when reloading an angular SPA published on github page

I am recieving error when reloading my angular application published on gh pages. The error is:

404
File not found.
The site configured at this address does not contain the requested file.

I have built my app using ng build --prod.

Github repo: https://github.com/chirag299051/IceAndFire

Github page: https://chirag299051.github.io/IceAndFire/

My app.module.ts file contains:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';


import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';

import { RouterModule, Routes } from '@angular/router';
import { BookDetailsComponent } from './book-details/book- 
details.component';
import { CharDetailsComponent } from './char-details/char- 
details.component';
import { HouseDetailsComponent } from './house-details/house- 
details.component';
import { GotService } from './got.service';
import { GotHttpService } from './got-http.service';

import { HttpClientModule, HttpClient } from '@angular/common/http';

@NgModule({
declarations: [
AppComponent,
HomeComponent,
AboutComponent,
BookDetailsComponent,
CharDetailsComponent,
HouseDetailsComponent
],
imports: [
HttpClientModule,
BrowserModule,
RouterModule.forRoot([
  {path: 'home', component: HomeComponent},
  {path:'',redirectTo:'home',pathMatch:'full'},
  {path: 'about', component: AboutComponent},
  {path: 'book/:name',component : BookDetailsComponent},
  {path: 'char/:url',component : CharDetailsComponent},
  {path: 'house/:name',component : HouseDetailsComponent}
])
],
providers: [GotService,GotHttpService,HttpClient],
bootstrap: [AppComponent]
})
export class AppModule { }

And on my subdomain my routes are not working when i click on any links, i have deployed using nginx.

Subdomain : got.chirag9.com

like image 206
chirag Avatar asked Mar 24 '26 13:03

chirag


1 Answers

In app-routing.module.ts file use

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

instead of

imports: [RouterModule.forRoot(routes)]

Here we have to pass useHash: true to enable hash character in URL. This option will help to prevent the reload issue in GitHub pages.

like image 121
Puskal Avatar answered Mar 26 '26 08:03

Puskal