J'ai le module de routage suivant:

const routes: Routes = [
  { path: '', component: HomeComponent },\
  { path: 'x', component: xComponent},
  { path: 'x-d/:mid', component: xdComponent}
];

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

Lorsque je vais dans le navigateur directement dans mywebsite/x cela fonctionne parfaitement, cependant, si je vais à mywebsite/x-d/5 (n'importe quel identifiant devrait fonctionner ici), cela me donne une erreur 404.

J'ai déjà configuré mon apache pour qu'il se replie sur index.html afin qu'Angular gère tout dans le front-end, cependant, une route avec un paramètre ne se charge pas correctement.

J'ai inclus mon fichier .htaccess avec ma configuration de secours ci-dessous, c'est le standard sur la documentation angulaire pour Apache.

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
0
jquijano 18 sept. 2020 à 08:52

2 réponses

Meilleure réponse

Je l'ai résolu.

J'exécutais mon script de construction avec les éléments suivants:

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

Tout ce que j'avais à faire était de supprimer le point, comme ceci:

sudo ng build --prod --base-href /
0
jquijano 25 sept. 2020 à 17:55

Juste pour confirmer, votre chemin d'URL réel ne doit pas contenir id (ou mid dans votre cas) précédé de ": ". Cela devrait être par exemple mywebsite/x-d/23

0
dev_ob 18 sept. 2020 à 08:40