Jose Jollja Logo
Desplegando en cPanel (React, Next, Nuxt y .htaccess)
UNIVERSIDAD VS. MERCADO REAL

Desplegando en cPanel (React, Next, Nuxt y .htaccess)

¿Subiste tu aplicación de React, Vue, Angular o Vite a tu hosting cPanel y cuando recargas la página o intentas navegar a una sección te sale el molesto Error 404? No te preocupes, este es el dolor de cabeza número uno al que se enfrentan los desarrolladores frontend cuando intentan alojar aplicaciones modernas basadas en Single Page Applications (SPAs) en servidores web tradicionales.

En este artículo expandido de nuestro blog, aprenderás cómo funciona el ciclo de renderizado estático, por qué cPanel rompe las rutas internas por defecto, y cómo dominar el archivo oculto .htaccess para solucionar el enrutamiento para siempre. También cubriremos los casos especiales y configuraciones necesarias para frameworks avanzados como Next.js y Nuxt.

🧠Entendiendo la Infraestructura: El choque de dos mundos

1. cPanel y Servidores Apache: Diseñados originalmente para la era web clásica (PHP, HTML estático). Cuando un usuario entra a tusitio.com/contacto, Apache busca físicamente una carpeta llamada /contacto o un archivo llamado contacto.html en el servidor. Si no existe, lanza un Error 404 de inmediato.

2. Single Page Applications (SPAs): Frameworks como React, Vue o herramientas como Vite funcionan bajo el concepto de un único archivo físico real: index.html. El enrutamiento (ir a /contacto o /dashboard) lo maneja JavaScript en el navegador del cliente (Client-Side Routing), no el servidor.

3. El archivo .htaccess: Es un archivo de configuración a nivel de directorio soportado por servidores web Apache. Permite alterar directivas de software, proteger carpetas, cambiar parámetros del sistema y, crucialmente en nuestro caso, crear reglas de reescritura de URLs mediante el módulo mod_rewrite.

1. El Build Estático y Subida del Proyecto

Para desplegar en un hosting tradicional sin Node.js nativo para backend activo en producción, debemos convertir nuestro código moderno de desarrollo en recursos estáticos optimizados que el navegador pueda interpretar (HTML, CSS y JS planos).

Paso 1: Compilar de forma local
Ejecuta el comando correspondiente de producción en tu terminal de desarrollo:

bash
npm run build

Esto creará un directorio optimizado y minificado, comúnmente llamado dist (en Vite/Vue) o build (en Create React App).

Paso 2: Compresión y Carga
Comprime los archivos que se encuentran dentro de esa carpeta resultante en un archivo .zip. Accede a tu cPanel, entra al Administrador de Archivos, navega hasta el directorio raíz público de tu dominio (habitualmente la carpeta public_html), sube el archivo comprimido y descomprímelo allí.

Paso 3: Seguridad HTTPS Gratuita
Antes de probar, no olvides proteger tu sitio web. Dirígete a la sección SSL/TLS Status dentro del panel principal de tu cPanel, selecciona tus dominios y haz clic en el botón Run AutoSSL. En unos minutos, tendrás instalado un certificado SSL de confianza totalmente gratis.

2. El Truco Definitivo: El archivo `.htaccess`

Ahora es cuando ocurre el error clásico: entras a la home (/), todo carga hermoso, pero si haces clic en un enlace de tu navbar que te lleva a /servicios y presionas F5 para actualizar la página, la pantalla se va a blanco con un error 404 de servidor Apache.

La Solución: Debemos forzar a Apache a que deje de buscar carpetas físicas y redirija de forma transparente absolutamente todas las solicitudes de rutas hacia el archivo único index.html, permitiendo que el router de React o Vue tome el control en el cliente.

Crea un archivo llamado exactamente .htaccess dentro de tu directorio public_html (si no lo ves después de crearlo, asegúrate de activar la casilla de "Mostrar archivos ocultos / dotfiles" en la configuración del Administrador de Archivos de cPanel) e inserta el siguiente código:

apache
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.html$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-l
 RewriteRule . /index.html [L]
</IfModule>

¿Qué hace este código exactamente? Activa el motor de reescritura de URLs (RewriteEngine On), verifica si el archivo físico solicitado no existe (!-f), si el directorio no existe (!-d) y si no es un enlace simbólico (!-l). Si se cumplen estas condiciones, inyecta el contenido de index.html sin cambiar la URL del navegador.

3. Casos Especiales: Meta-frameworks modernos (Nuxt y Next.js)

Cuando trabajamos con entornos que por defecto nacen para renderizado en servidor (SSR), necesitamos configurarlos explícitamente para exportar páginas estáticas antes de subirlas a cPanel.

Estrategia en Nuxt (Vue)
En lugar de ejecutar el comando build convencional, utiliza el comando nativo de generación estática:

bash
npm run generate

Este comando recorrerá dinámicamente tus componentes y rutas para convertirlos en archivos HTML independientes guardados dentro de la carpeta dist, lista para cPanel.

Estrategia en Next.js (React)
Si tu proyecto de Next.js se conecta a APIs externas y no requiere procesamiento en servidor de Node para las rutas, abre tu archivo de configuración next.config.ts o next.config.js y añade las directivas de exportación estática:

javascript
const nextConfig = {
 output: 'export',
 trailingSlash: true,
};
export default nextConfig;

Una vez añadidas las propiedades, ejecuta en tu consola local:

bash
npm run build

Esto creará un directorio llamado out. Esta carpeta contiene el build estático puro que debes comprimir y subir a la carpeta public_html de tu hosting cPanel.

🚀 ¡Momento Eureka: Tu Frontend Funciona a la Perfección!

Al aplicar el truco de .htaccess y los builds estáticos, has unificado dos tecnologías de eras distintas. Ahora puedes abrir el navegador, navegar por los menús internos de tu SPA, refrescar la página, y notarás que el sitio web carga instantáneamente con su candado de seguridad HTTPS activo y sin arrojar jamás un error de página no encontrada.

¿Listo para dar el gran salto técnico?

Alojar aplicaciones estáticas en cPanel es excelente para proyectos rápidos o clientes corporativos tradicionales. Sin embargo, para dominar aplicaciones backend complejas y automatizar pipelines en la nube, es hora de controlar tu propia infraestructura.

¿Listo para configurar tu propio servidor VPS por terminal desde cero en la Parte 3?
¡Sígueme para ver la guía completa de Linux y guarda este post para tu próximo despliegue!

- José Jollja

¿Te gustó este artículo?

Conectemos en mis redes sociales donde comparto más contenido, tutoriales y tips de ingeniería de software a diario.