~/cuaderno / 2019 / entrada-497.md

Angular en Apache: rutas al recargar y reglas .htaccess

Publicado 25 junio 2019 2 min de lectura Revisado 14 septiembre 2026
Angular / recargar una ruta. Un fallback para la aplicación, no para ocultar errores

Durante mi trabajo con Angular en Shure, en Chicago, me encontré con un problema habitual al desplegar una SPA: la navegación dentro de la aplicación funcionaba, pero recargar una ruta devolvía un error del servidor.

Qué espera el router

Al abrir /productos/uno, Apache busca un recurso con esa ruta. Si la navegación la resuelve Angular, el servidor necesita entregar el archivo de entrada para que el router interprete la URL.

Para una aplicación desplegada en la raíz, un .htaccess puede partir de:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]

!-f comprueba que no sea un archivo existente. No lo sustituyas por !-s: un archivo vacío sigue siendo un archivo que quizá deba conservar su respuesta.

El directorio de despliegue importa

Si publicas bajo una subruta, configura la base de la aplicación y la resolución del servidor de forma coherente. Comprueba además dónde genera la compilación sus archivos de navegador: no todas las configuraciones de Angular producen la misma estructura.

Qué probar

Recarga una ruta interna y abre esa misma URL en una pestaña nueva. Comprueba JavaScript, CSS, imágenes y endpoints de API. El fallback no debe convertir cualquier error de recurso o respuesta del backend en el HTML de la aplicación.

No desactives toda la caché para arreglar el router. Los archivos versionados y el documento de entrada necesitan políticas distintas.

Referencia: despliegue de Angular.

Compartir: X / Twitter LinkedIn Reddit Email
Siguiente comando: volver al archivo o pulsa Ctrl + K

2 comentarios

TIP RÁPIDO

Sé concreto, añade contexto (versión, distro, stack) y si puedes pega logs en bloque de código. Menos drama, más señales.

nginx plesk mariadb logs
  1. David Abellán OP ADMIN

    Hola, tienes que colocar el fichero .htaccess en la carpeta dónde se encuentra el index.html que tu aplicación Angular ha creado.

Deja una respuesta

NormaRespeto, claridad, y cero spam. El email no se publica.

Consejo: usa bloques de código para logs. Ej: ```log ... ```

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.