Netlify y Vercel son la respuesta fácil para un sitio estático, pero mucha gente no se mueve: el dominio ya está en un alojamiento con cPanel, la empresa paga el servidor, o el sitio tiene que convivir con algo que ya corre ahí. Todo eso está bien: una exportación estática son archivos, y FTP mueve archivos.
Lo único que sale mal de forma fiable es subir la carpeta en lugar de lo que hay dentro. El resto es mecánico.
Antes de empezar
Necesitas tres cosas de tu panel de alojamiento, normalmente en Cuentas FTP:
- Host:
ftp.tudominio.com, o una dirección IP - Usuario y contraseña: los de la cuenta FTP, no los de tu panel
- Puerto: 21 para FTP, 22 para SFTP
Usa SFTP si te lo ofrecen. El FTP a secas manda tu contraseña en texto plano. Casi todos los alojamientos admiten SFTP en el puerto 22 y el flujo es idéntico.
También necesitas un cliente FTP. FileZilla es gratuito y está en todas las plataformas; Cyberduck y WinSCP valen igual.
Paso 1: descomprime y comprueba que funciona
Descomprime la exportación donde puedas encontrarla. Antes de subir nada, ejecútala en local y navégala.
Merece la pena dedicarle dos minutos. Un enlace roto es mucho más fácil de diagnosticar en localhost que una vez está en producción y estás adivinando si el problema es la exportación o el servidor.
Paso 2: conéctate
Abre FileZilla y rellena la barra de conexión rápida:
Servidor: sftp://ftp.tudominio.com
Usuario: tu-usuario-ftp
Contraseña: tu-contraseña
Puerto: 22
El prefijo sftp:// importa: sin él FileZilla usa FTP plano aunque pongas el puerto.
Aparecen dos paneles. El izquierdo es tu ordenador, el derecho el servidor.
Paso 3: encuentra la raíz web
En el lado del servidor, busca uno de estos:
public_html: cPanel y la mayoría de alojamientos compartidoswww: algunos proveedoreshtdocs: XAMPP y configuraciones antiguashttpdocs: Plesk
Ese directorio es lo que ven los visitantes en tu dominio. Si aterrizas en un sitio donde conviven logs, tmp y public_html, estás un nivel por encima: entra en public_html.
Paso 4: sube el contenido, no la carpeta
Este es el paso que sale mal.
Tu exportación descomprimida se parecerá a esto:
mi-sitio-export/
├── index.html
├── about/
├── contact/
├── assets/
└── README.md
Abre mi-sitio-export en el panel izquierdo, selecciona todo lo que hay dentro y arrástralo a public_html.
Si arrastras la carpeta mi-sitio-export entera, tu sitio acaba en tudominio.com/mi-sitio-export/ y la portada da 404. Al terminar tiene que existir public_html/index.html. Si está en public_html/mi-sitio-export/index.html, súbelo un nivel.
Puedes saltarte README.md: es documentación para ti, no parte del sitio. Si se queda, tampoco pasa nada.
Las exportaciones grandes tardan. La cola de transferencia de FileZilla muestra el progreso; déjala trabajar.
Paso 5: compruébalo
Abre tu dominio. Debería salir la portada. Después:
- Recorre el menú: los enlaces internos son relativos, así que deberían resolverse sin que configures nada
- Abre DevTools → Network y busca 404: un recurso ausente casi siempre es una subida incompleta; vuelve a subir esa carpeta
- Entra directamente a una página profunda, por ejemplo
tudominio.com/about/. Si la portada va y las profundas dan 404, mira abajo.
Lo que suele fallar en alojamiento compartido
Las páginas profundas dan 404 y la portada no
Tu exportación usa URLs de directorio (/about/index.html servido en /about/). Apache lo hace por defecto con DirectoryIndex, pero algunos alojamientos lo desactivan. Añade un .htaccess en public_html:
DirectoryIndex index.html
Options +FollowSymLinks
En nginx no se arregla desde un archivo: pide a soporte que active index index.html; para el directorio.
Página en blanco con errores de módulo
El servidor manda los .mjs con el tipo de contenido equivocado y el navegador se niega a ejecutarlos. Añade al .htaccess:
AddType text/javascript .mjs
Misma causa que el problema local con file://, en otra capa.
Faltan fuentes o imágenes
En el plan gratuito los recursos se enlazan al CDN original en vez de empaquetarse. Cargarán mientras el visitante tenga conexión y el sitio original siga existiendo. Si necesitas que todo sea autónomo en tu servidor, usa la opción de descargar recursos para que el ZIP lleve los archivos.
Sigue viéndose el sitio antiguo
Caché del navegador, o de tu alojamiento. Primero recarga forzada (Cmd+Shift+R / Ctrl+F5), luego busca el botón de purgar caché en tu panel. Si tienes Cloudflare delante del dominio, necesita su propia purga.
Errores de permisos
Los archivos deberían ser 644 y los directorios 755. FileZilla puede hacerlo: selecciona todo, clic derecho, Permisos de archivo, y marca Redirigir a subdirectorios.
Mantenerlo actualizado
FTP no tiene control de versiones, así que volver a subirlo todo con cada cambio cansa rápido. Dos formas de que duela menos:
Sincroniza en vez de resubir. La comparación de directorios de FileZilla resalta las diferencias para que solo envíes lo que cambió.
Automatízalo. Si tu alojamiento admite SSH, rsync es un solo comando:
rsync -avz --delete ./mi-sitio-export/ usuario@tudominio.com:~/public_html/
--delete borra del servidor lo que ya no existe en local, lo que mantiene la limpieza, y también borrará cualquier otra cosa que viva en public_html, así que compruébalo antes de ejecutarlo.
Si acabas haciendo esto cada semana, es una señal razonable para mudarte a un alojamiento con despliegues por Git. Las opciones de alojamiento estático gratuito cubren cómo sería eso.
Relacionado
Preguntas Frecuentes
Antecedentes Técnicos
Comprender la arquitectura subyacente es clave para la escalabilidad a largo plazo. NoCodeExport prioriza la generación de código limpio y modular que se ajusta a los estándares web modernos.
Arquitectura
Construido sobre marcos de trabajo establecidos para garantizar la portabilidad y el rendimiento en cualquier proveedor de hosting.
Seguridad
La generación estática reduce significativamente la superficie de ataque, proporcionando seguridad de nivel empresarial para cada proyecto.


