WordPress

Error 403 Forbidden en WordPress: cómo recuperar el acceso a wp-admin

Pantalla de servidor mostrando un mensaje de error 403 Forbidden al intentar acceder a un sitio web.

El error 403 Forbidden indica que el servidor ha recibido tu solicitud de acceso a /wp-admin, pero se niega a autorizarla debido a restricciones de seguridad o permisos incorrectos. La solución más probable pasa por restaurar los permisos de archivos en el servidor o regenerar el archivo .htaccess, ya que suelen ser las causas principales de este bloqueo.

Qué significa el error

Este error aparece en el navegador al intentar cargar la página de inicio de sesión o el escritorio de WordPress. El mensaje exacto suele ser '403 Forbidden - You don't have permission to access /wp-admin/ on this server'. Afecta a cualquier usuario, administrador o suscriptor, y bloquea completamente la gestión del sitio. No es un error de WordPress en sí, sino una respuesta del servidor web (Apache o Nginx) que impide la lectura de los archivos necesarios para cargar el panel.

Causas más habituales

  • Permisos de archivos o carpetas incorrectos en el servidor.
  • Archivo .htaccess corrupto o con reglas de seguridad demasiado restrictivas.
  • Plugins de seguridad que bloquean la IP del administrador por error.
  • Reglas de seguridad del servidor (mod_security) que interpretan la petición como un ataque.
  • Configuración incorrecta en el archivo wp-config.php.
  • Ausencia o bloqueo del archivo index.php dentro del directorio /wp-admin/.

Antes de empezar

Atención: Antes de modificar cualquier archivo, realiza una copia de seguridad completa de tu sitio web y de la base de datos a través del panel de control de tu hosting (cPanel, Plesk o acceso FTP/SFTP). Necesitarás acceso FTP o un administrador de archivos web para ejecutar estas soluciones. Asegúrate de conocer la ruta raíz de tu instalación de WordPress, generalmente denominada public_html o www.

Solución 1: Regenerar el archivo .htaccess

El archivo .htaccess controla cómo el servidor web Apache gestiona las solicitudes. Si este archivo se corrompe o contiene una regla errónea, puede bloquear el acceso a directorios específicos como /wp-admin.

  1. Accede a tu servidor mediante FTP o el Administrador de Archivos de tu hosting.
  2. Localiza el archivo .htaccess en la raíz de tu instalación de WordPress. Si no lo ves, activa la opción 'Mostrar archivos ocultos' en tu cliente FTP.
  3. Cambia el nombre del archivo a .htaccess_backup para desactivarlo.
  4. Intenta acceder de nuevo a /wp-admin. Si funciona, el problema era el archivo.
  5. Inicia sesión en WordPress, ve a Ajustes > Enlaces permanentes y haz clic en 'Guardar cambios' sin modificar nada. Esto generará un nuevo archivo .htaccess limpio y funcional.

Esta solución funciona porque obliga a WordPress a reescribir las reglas de acceso estándar, eliminando cualquier configuración conflictiva previa.

Solución 2: Corregir los permisos de archivos y carpetas

Los archivos de WordPress deben tener permisos específicos para que el servidor pueda leerlos sin exponerlos a vulnerabilidades. Si los permisos son demasiado restrictivos (o demasiado abiertos), el servidor denegará el acceso.

  1. En tu cliente FTP, selecciona todas las carpetas y archivos de tu instalación de WordPress.
  2. Haz clic derecho y selecciona 'Cambiar permisos' o 'Atributos de archivo'.
  3. Establece los permisos de las carpetas a 755.
  4. Establece los permisos de los archivos a 644.
  5. Asegúrate de marcar la opción 'Aplicar a todos los subdirectorios' y 'Aplicar solo a directorios' (para el paso 3) o 'Aplicar solo a archivos' (para el paso 4).

Esta configuración es el estándar de seguridad para entornos Linux. Los permisos 755 permiten al propietario escribir y al servidor leer, mientras que 644 protege los archivos de escritura externa pero permite su lectura por parte del servidor web.

Solución 3: Desactivar plugins de seguridad

Si utilizas plugins como Wordfence, iThemes Security o similares, es posible que hayan bloqueado tu dirección IP por un falso positivo, impidiéndote entrar al panel de administración.

  1. Accede vía FTP a la carpeta /wp-content/plugins/.
  2. Busca la carpeta del plugin de seguridad que tengas instalado.
  3. Cambia el nombre de la carpeta (por ejemplo, de 'wordfence' a 'wordfence_desactivado').
  4. Intenta acceder al panel de administración. Si consigues entrar, significa que el plugin estaba causando el bloqueo.
  5. Vuelve a cambiar el nombre de la carpeta a su original y accede al panel para configurar las reglas de exclusión de IP correctamente.

Esta técnica funciona porque WordPress desactiva automáticamente cualquier plugin cuya carpeta no pueda encontrar, permitiéndote recuperar el acceso inmediatamente.

Solución 4: Revisar reglas de seguridad del servidor (mod_security)

En ocasiones, el firewall del servidor (mod_security) bloquea peticiones POST hacia /wp-admin al considerarlas sospechosas. Esto ocurre a menudo tras actualizaciones de seguridad en el hosting.

  1. Contacta con el soporte técnico de tu proveedor de hosting.
  2. Solicita que revisen los logs de error de Apache o Nginx relacionados con tu IP.
  3. Pregunta específicamente si hay alguna regla de mod_security bloqueando las peticiones a /wp-admin.
  4. Si es así, solicita que añadan una regla de exclusión para tu IP o que ajusten la sensibilidad del firewall.

Esta solución es necesaria cuando el problema reside fuera del código de tu sitio, es decir, en la configuración del servidor, algo que solo el administrador del hosting puede modificar.

Solución 5: Comprobar el archivo index.php en el directorio wp-admin

A veces, por error de sincronización o borrado accidental durante una actualización incompleta, el archivo index.php dentro de la carpeta /wp-admin/ puede desaparecer o corromperse, provocando un error 403.

  1. Descarga una copia limpia de WordPress desde el sitio oficial que coincida exactamente con tu versión actual.
  2. Descomprime el archivo ZIP en tu ordenador local.
  3. Accede por FTP a tu servidor y navega hasta la carpeta /wp-admin/.
  4. Sube el archivo index.php desde la carpeta descomprimida de tu ordenador hacia el directorio /wp-admin/ de tu servidor, reemplazando el existente si lo hubiera.
  5. Comprueba los permisos de este archivo específico asegurándote de que estén establecidos en 644.

Esta solución funciona porque el servidor web necesita un archivo de índice ejecutable dentro de cada directorio para saber qué mostrar al intentar acceder a la ruta, evitando que devuelva un error de acceso denegado por directorio vacío.

Solución 6: Desactivar todos los plugins temporalmente vía FTP

Si no estás seguro de cuál es el plugin causante o si el problema no proviene exclusivamente de un plugin de seguridad, desactivar todo el directorio de plugins de golpe aislará el fallo.

  1. Conéctate a tu servidor mediante FTP o administrador de archivos.
  2. Navega hasta la ruta /wp-content/.
  3. Renombra la carpeta plugins a plugins_old.
  4. Intenta iniciar sesión en /wp-admin/. Si el error desaparece, un plugin genera el conflicto.
  5. Vuelve a renombrar la carpeta como plugins y entra al panel de administración para desactivar los plugins uno por uno desde la interfaz de WordPress hasta dar con el culpable.

Esta solución es sumamente eficaz para descartar incompatibilidades de código tras actualizar plugins o WordPress.

Cómo comprobar que se ha solucionado

Una vez aplicados los pasos, limpia la caché de tu navegador (o usa el modo incógnito) e intenta acceder a /wp-admin. Si la página carga correctamente, el problema está resuelto. Verifica también que el sitio público sea accesible y que no aparezcan errores adicionales. Comprueba en el escritorio de WordPress que puedes navegar por las diferentes secciones sin ver avisos de permisos denegados. Si el problema persiste, revisa la guía de diagnóstico de errores críticos en WordPress para descartar fallos de PHP.

Si nada de lo anterior funciona

Si sigues recibiendo el error 403, es probable que haya un problema más profundo. Revisa el archivo error_log en la raíz de tu instalación; este archivo contiene detalles técnicos sobre por qué el servidor deniega el acceso. Si el error persiste tras contactar con el hosting, considera restaurar una copia de seguridad completa anterior a la aparición del error. Si el problema ocurre tras una actualización, consulta también cómo solucionar errores de actualización para descartar conflictos de versiones.

Preguntas frecuentes

¿El error 403 puede ser causado por mi proveedor de internet?

Es poco probable, pero posible. Si tu IP pública ha sido marcada como fuente de ataques por el firewall del servidor, el acceso será bloqueado. Prueba a reiniciar tu router para obtener una nueva IP dinámica o intenta acceder desde una conexión diferente.

¿Debo cambiar los permisos a 777?

Nunca. Establecer permisos 777 significa que cualquier usuario puede leer, escribir y ejecutar archivos en tu servidor, dejando la puerta abierta a malware. Utiliza siempre 755 para carpetas y 644 para archivos.

¿Es un ataque de hackers?

Puede serlo, o simplemente un falso positivo de seguridad. Si sospechas que tu sitio ha sido comprometido, cambia las contraseñas de acceso al FTP, base de datos y administrador de WordPress una vez recuperes el acceso.

¿Por qué el error solo ocurre en /wp-admin y no en la web?

El directorio /wp-admin contiene archivos PHP críticos y requiere permisos de ejecución distintos al resto del sitio. Las reglas de seguridad suelen ser más estrictas en esta carpeta para proteger el panel de control de accesos no autorizados.

¿Qué pasa si borro el archivo .htaccess por completo?

Si eliminas el archivo .htaccess sin regenerarlo, las URLs amigables de tu sitio web dejarán de funcionar y la mayoría de páginas secundarias mostrarán un error 404. Por ello, siempre se debe regenerar desde los ajustes de enlaces permanentes o crear uno nuevo con la estructura predeterminada de WordPress.

¿Cómo influye la versión de PHP en este error 403?

Una incompatibilidad grave entre la versión de PHP ejecutada en el servidor y la versión de ciertos plugins o el núcleo de WordPress puede desencadenar fallos de ejecución que el servidor interpreta erróneamente como accesos prohibidos. Asegúrate desde tu panel de hosting de utilizar una versión de PHP compatible, como PHP 8.0 o superior.