Implementé un pequeño website angular estático en GitHub Link, pero tiene un problema. Cuando actualizo una página de productos como esta , obtengo el error 404.
Sin embargo, cuando navego a las páginas de productos de la página de inicio, las páginas del producto se abren correctamente.
El enlace reprository de esta aplicación es – aquí .
Soy principiante en angular – por favor, ¿por qué me ayuda a hacerlo?
Esto se debe a que está utilizando HTML pushState como estrategia de location debido a lo cual, cuando actualiza desde el browser, el browser envía la request de su página enrutada a Github. Como Github desconoce este routing interno por angular, muestra un error 404.
Hay un par de soluciones:
1. Si quieres mantenerte en Github, entonces debes moverte a la estrategia de location HashBased . Simplemente resolverá tu problema.
2. Si no tiene ninguna dependencia de Github, puede pasar a otros serveres (firebase o apache) que admitan la creación de un file htaccess o cualquier otro mecanismo alternativo. ( Vea este enlace para más información ). Desafortunadamente, este file htaccess aún no es compatible con Github. Yo personalmente prefiero firebase debido a estos fallos técnicos.
Con estos mecanismos alternativos quiero decir que el server networkingirige a index.html, es decir, su file HTML principal en el caso de cualquier ruta 404.
Tuve el mismo problema. O utiliza la location de la estrategia de búsqueda que encuentra aquí: https://angular.io/guide/router#appendix-locationstrategy-and-browser-url-styles
Pero luego sus URL tendrán un # adicional como: http://tudominio.com/#/productos
Si no desea, debe agregar .htaccess y volver a escribir todo en index.html.
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L] </IfModule>
Guárdelo como .htaccess en la misma carpeta donde está index.html.