El 403 Forbidden no es un WordPress «caído». El servidor recibió la petición y se negó a servirla. En la práctica suele ser un permiso de archivo, un .htaccess que deniega, una carpeta sin índice, o una IP que el firewall marcó. En Conexcol el hosting Linux es un sitio elástico con cPanel; Imunify360 mira el tráfico. Eso no es una acusación contra tu cuenta: es una regla que a veces se dispara sola, sobre todo tras muchos intentos de wp-login.php.

No empieces por «me hackearon». Empieza por permisos, por el .htaccess y por si el 403 es para todo el mundo o solo desde tu red.

Qué vas a tener al terminar

El recurso abriendo, o la certeza de si es un archivo, una regla o una IP, para no dar vueltas en el ticket.

1. ¿Es todo el sitio o una URL?

Prueba el home, una entrada, /wp-admin y un archivo estático (/wp-includes/images/w-logo-blue.png o una imagen tuya en uploads). Si el PNG abre y el PHP no, no es «el servidor apagado»: es una regla sobre scripts o sobre el administrador.

Prueba también con el celular fuera del Wi‑Fi de la oficina (datos). Si en el celular entra y en el computador no, la IP de la oficina puede estar en una lista. Eso apunta a firewall, no a un tema de WordPress.

2. Permisos: 755 y 644, no 777

En el Administrador de archivos de cPanel (o por FTP), la raíz de WordPress y las carpetas van en 755. Los archivos, 644. wp-config.php a veces se deja en 600 o 640. 777 no es la solución: abre de más y, en muchos servidores, el propio panel o Imunify lo tratan como riesgo.

Si alguien «arregló» un 403 poniendo 777 a wp-content, revierte eso. El 403 puede volver, o aparecer otro síntoma, y el sitio queda peor.

3. El .htaccess

Igual que en el error 500: renombra .htaccess a .htaccess.bak y recarga. Si el 403 desaparece, dentro del archivo había un Deny from all, un Require all denied, una protección de hotlink mal copiada o una regla de un plugin de seguridad que se quedó a medias.

No pegues recetas de foros con RewriteRule contra wp-admin si no las entiendes. Una regla pensada para «bloquear XML-RPC» a veces bloquea el administrador entero.

Cuando el sitio vuelva, regenera el archivo desde AjustesEnlaces permanentesGuardar cambios.

4. Carpeta sin índice

Si el 403 es solo en una ruta tipo /tienda/ o /blog/ y no hay index.php ni index.html ahí, y el listado de directorios está apagado (lo normal), el servidor no tiene qué mostrar. En WordPress el home no vive en una subcarpeta vacía: vive en la raíz donde está index.php del núcleo. Confirma que no moviste el núcleo a otro sitio y dejaste el document root apuntando a una carpeta vacía.

5. Firewall e Imunify (sin drama)

Imunify360 y reglas de ModSecurity están en el stack del sitio elástico. Un 403 o un «Access denied» después de un plugin que dispara muchos POST, un constructor que guarda cada tres segundos, o un login a prueba y error, puede ser el WAF, no un juicio sobre tu contenido.

No intentes apagar el firewall tú. Si ya comprobaste permisos y .htaccess, y el 403 sigue —sobre todo si es solo desde una IP—, abre el ticket y di:

  • el dominio y la URL exacta que da 403;
  • si pasa en todos los navegadores y en datos móviles;
  • tu IP pública (búscala en el momento, cambia);
  • si alguien estuvo en wp-login a prueba de claves;
  • una captura de la página de error, no recortada.

Soporte mira listas de IP y registros. A veces se libera una dirección; a veces hay que ajustar una regla. Eso no se hace con un «desactiva Imunify» en el chat.

6. Hotlink y protecciones de cPanel

cPanel → Seguridad → Hotlink Protection. Si alguien la encendió y no puso el propio dominio en la lista, las imágenes (y a veces CSS) dan 403. Si el HTML carga y las fotos no, mira esa pantalla antes de reinstalar el tema.

La privacidad de directorio de cPanel y un .htaccess de protección de carpeta también dan 401 o 403. Si estás protegiendo un staging, es el comportamiento esperado: proteger un directorio con contraseña.

Si no sale

Ticket de soporte técnico, no de facturación. Restaurar a ciegas con JetBackup puede devolver un .htaccess viejo, pero también puede reponer el mismo 403 si la causa es la IP. Mejor el log y la URL.

Cloud Web Hosting · Error 500 · Ticket