Aloje su propio agente de IA con OpenClaw: instalación gratuita en un solo clic!

Cómo solucionar el error 405 Method Not Allowed

How to Fix the 405 Method Not Allowed Error

Haces clic en Enviar en un formulario. La página muestra un error 405 Method Not Allowed. Sin traza de pila ni ninguna pista útil: solo un rechazo directo de tu servidor. Bienvenido a uno de los códigos de error HTTP más molestos.

El código de estado HTTP 405 te dice una cosa muy concreta: el servidor encontró el recurso, entendió tu solicitud y rechazó el método HTTP que utilizaste. La página existe. El servidor simplemente no ejecutará lo que le pediste. Esto no es un 404. La URL es correcta. Algo en la configuración del servidor, en el código de tu aplicación o en un plugin instalado recientemente está rechazando una solicitud POST o PUT perfectamente válida.

A continuación encontrarás un análisis de todas las causas que he visto en producción, además de 11 soluciones ordenadas desde «lleva treinta segundos» hasta «restaurar todo desde una copia de seguridad». Si eres desarrollador y te encuentras con este error en un contexto de API, o eres el dueño de un sitio mirando un formulario de contacto roto, la solución casi siempre está en el mismo puñado de lugares.

Código de error 405 Método No Permitido
Tipo de error Error del lado del cliente (normalmente causado por el servidor)
Variantes comunesHTTP Error 405, HTTP 405, 405 Not Allowed, Method Not Allowed, HTTP Error 405 – Method Not Allowed
Causas típicas Método HTTP incorrecto, mala configuración del servidor, restricciones de la API, reglas del WAF, conflictos con plugins

Qué causa el error 405

El error 405 se produce cuando el método de la solicitud HTTP no coincide con lo que acepta el recurso. El concepto es sencillo; lo difícil es identificar qué capa introdujo la discrepancia.

Método HTTP no compatible

Cada recurso web está configurado para aceptar métodos HTTP específicos. GET obtiene datos. POST envía datos. PUT actualiza. DELETE elimina. Si se envía una solicitud DELETE a una página HTML estática que solo admite GET, el servidor devuelve un 405: encontró la página pero se niega a procesar esa acción. Esta es la causa más común y normalmente indica que tu código, la acción del formulario o la llamada a la API apuntan al endpoint incorrecto.

Configuración incorrecta del servidor

Apache usa archivos .htaccess. NGINX usa nginx.conf. Una sola directiva mal colocada en cualquiera de los dos puede bloquear un método HTTP completo en todo un árbol de directorios sin previo aviso. Una vez localicé un error 405 en una directiva Limit que alguien había copiado de un blog sobre refuerzo de seguridad sin entender qué hacía. Bloqueaba POST en todos los archivos HTML de la raíz del sitio. El formulario de contacto, la página de pago, la pantalla de inicio de sesión: todo roto. La solución fue borrar dos líneas. Encontrar esas dos líneas llevó buena parte de una tarde, porque nadie recordaba haberlas incluido.

Restricciones de la API

Las APIs son estrictas con respecto a qué métodos de solicitud HTTP aceptan. Un endpoint diseñado para POST no responderá a PUT solo porque tu código cliente envíe uno. Si estás viendo errores 405 solo en llamadas a la API, revisa la documentación de la API y verifica que utilizas el método correcto para cada endpoint. Esto es especialmente frecuente cuando se trabaja con APIs de terceros que versionan sus endpoints y marcan como obsoletos métodos anteriores.

Las APIs REST suelen ser las principales sospechosas en estos casos. Una solicitud GET a un endpoint de recurso que solo admite POST devolverá un 405 cada vez. Lo mismo ocurre con PATCH frente a PUT: algunas APIs los tratan como intercambiables, otras no. Lee la documentación, revisa la cabecera Allow en la respuesta 405 (ahí se indican los métodos que el endpoint realmente acepta) y ajusta tu solicitud en consecuencia.

Reglas del cortafuegos de aplicaciones web (WAF)

Un firewall de aplicaciones web puede anular por completo la configuración de tu servidor. Las reglas del WAF suelen bloquear métodos HTTP como PUT, DELETE o PATCH en ciertas rutas como medida de seguridad. El problema empieza cuando esas reglas son demasiado amplias. Una regla que bloquea DELETE en todo tu dominio suena razonable hasta que tu panel de administración necesita DELETE para eliminar registros.

Si habilitaste o actualizaste tu WAF recientemente y empezaron a aparecer errores 405, reduce las reglas de bloqueo de métodos y vuelve a probar. Revisa el panel de tu proveedor de WAF para ver los registros que muestran qué reglas se activaron. Una seguridad excesiva crea sus propios problemas, y un 405 que bloquea funcionalidad legítima es peor que el ataque teórico que intenta prevenir.

Conflictos entre plugins y temas

Los sitios WordPress son especialmente propensos a esto. Instalas un plugin nuevo, registra rutas de la API REST o reglas de reescritura personalizadas, esas rutas entran en conflicto con algo en .htaccess y tu sitio comienza a devolver errores 405 al enviar formularios. El plugin funciona bien por sí solo. Es la interacción con tu configuración actual lo que provoca el fallo. Lo mismo ocurre con temas que incluyen funcionalidad personalizada o plugins incluidos.

Cambios residuales en la base de datos

Algunas extensiones modifican tablas de la base de datos durante la instalación y no limpian lo que dejaron cuando se eliminan. Los registros huérfanos en las tablas de opciones o en los registros de tipos de contenido personalizados pueden alterar la lógica de enrutamiento de tu aplicación. La aplicación puede acabar enviando solicitudes usando el método HTTP incorrecto porque su estado interno ya no se corresponde con la configuración real del servidor.

Cómo solucionar el error 405

Ve recorriéndolos en este orden. Los primeros son comprobaciones rápidas que resuelven la mayoría de los casos. Los últimos requieren profundizar en la configuración interna del servidor y en el código de la aplicación.

    1. Verifica que la URL sea correcta

    Empieza por lo más obvio, aunque resulte obvio. Los errores tipográficos en la configuración de las URLs provocan errores 405 más a menudo de lo que a nadie le gusta admitir.

    • Rutas mal escritas (/usres en lugar de /users)
    • Problemas de sensibilidad a mayúsculas y minúsculas (algunos servidores tratan /Page y /page como URLs diferentes)
    • Barras finales que redirigen silenciosamente a un controlador diferente
    • Una ruta que apunta a un controlador que no admite el método HTTP que se está usando

    Abre las herramientas de desarrollo del navegador, ve a la pestaña Network y observa la solicitud que está fallando. Comprueba el método (GET, POST, etc.) y la URL exacta a la que apunta. Luego compáralo con lo que espera tu aplicación. Si hay una discrepancia, corrige la URL o el controlador. Si todo parece correcto, continúa.

      2. Revierte las actualizaciones recientes

      Si el error 405 apareció justo después de una actualización, no te quedes una hora depurándolo. Reviértela primero. Puedes investigar después, con el sitio en funcionamiento.

      Haz una copia de seguridad de tu sitio antes de revertir. Luego revierte el cambio más reciente. En WordPress, un plugin como WP Rollback gestiona esto para el núcleo, los temas y los plugins. En otras plataformas, usa tu canal de despliegue o el control de versiones para restaurar el estado anterior. Si el error desaparece tras revertir, ya has aislado el problema. Espera a que el desarrollador lo corrija, envía un informe de error o busca una alternativa.

      Un hábito que evitaría la mayoría de estos incidentes: prueba cada actualización en un entorno de pruebas antes de llevarla a producción.

        3. Inspecciona los cambios en la base de datos

        Las extensiones a veces escriben en tu base de datos durante la instalación y no limpian lo que dejaron cuando se eliminan. Estos registros huérfanos pueden alterar la lógica de enrutamiento de tu aplicación, lo que puede provocar que envíe solicitudes HTTP con el método incorrecto.

        Abre phpMyAdmin o tu herramienta de base de datos, selecciona tu base de datos, ve a la pestaña SQL y ejecuta la siguiente consulta:

        SELECT UNIX_TIMESTAMP(MAX(UPDATE_TIME)) AS last_update

        FROM information_schema.tables

        WHERE TABLE_SCHEMA = 'your_database_name'

        GROUP BY TABLE_SCHEMA;

        Si la marca de tiempo coincide con el momento en que empezó el error 405, revisa las tablas modificadas recientemente en busca de registros que parezcan incorrectos. Concéntrate en las tablas de opciones, las tablas de enrutamiento y cualquier cosa relacionada con plugins que hayas instalado o eliminado recientemente. Haz siempre una copia de seguridad de tu base de datos antes de hacer cambios. Editar datos en producción sin una red de seguridad es buscarte un problema peor que el que estás intentando solucionar.

          4. Elimina plugins o temas defectuosos

          En sitios basados en CMS, un plugin o tema instalado recientemente es el desencadenante más común de errores 405. El nuevo código registra rutas en conflicto, modifica la configuración a nivel de servidor o cambia la forma en que tu aplicación procesa las solicitudes HTTP.

          En WordPress, ve al panel de administración, abre Plugins y desactiva lo que hayas instalado más recientemente. Prueba el sitio. Si el error desaparece, ese plugin era la causa. Repite el proceso con los temas desde Apariencia si el plugin no era el responsable.

          ¿No puedes acceder al panel de administración? Conéctate al servidor por SSH o FTP y cambia el nombre de la carpeta del plugin dentro de wp-content/plugins/. WordPress desactiva automáticamente cualquier plugin que no pueda encontrar. El mismo enfoque se aplica a los temas en wp-content/themes/. Prueba con otra extensión que ofrezca una funcionalidad similar una vez confirmado que la anterior era la causa del conflicto.

            5. Analiza los registros del lado del servidor

            Cuando las soluciones rápidas no funcionan, los registros son donde realmente encontrarás la respuesta. Necesitas revisar dos tipos.

            Registros del servidor

            Apache y NGINX mantienen registros de acceso y registros de errores. El registro de acceso almacena cada solicitud, incluyendo el método HTTP, la URL y el código de estado de la respuesta. El registro de errores explica por qué el servidor rechazó la solicitud. Estos dos juntos cuentan la historia completa.

            Los registros de Apache se encuentran en /var/log/apache2/ en Debian/Ubuntu o en /var/log/httpd/ en CentOS/RHEL. NGINX los mantiene en /var/log/nginx/.

            Usa tail -f /var/log/apache2/error.log para observar el registro de errores en tiempo real. Provoca el error 405 en tu navegador y luego revisa la entrada más reciente del registro. Te dirá exactamente qué regla o directiva provocó el rechazo.

            Registros de la aplicación

            Tu aplicación web mantiene sus propios registros separados del servidor. Estos contienen registros de depuración, trazas de excepciones y registros de auditoría que muestran cómo la aplicación procesó internamente la solicitud. Si los registros a nivel de servidor se ven limpios pero el error 405 sigue ocurriendo, la propia aplicación está generando el error mediante su lógica interna de enrutamiento.

            Revisa el directorio de registros en la carpeta raíz de tu aplicación. En WordPress, habilita WP_DEBUG y WP_DEBUG_LOG en wp-config.php para registrar errores a nivel de aplicación en wp-content/debug.log. En Laravel, revisa storage/logs/laravel.log. En Django, revisa el controlador de registros que tengas configurado. El registro de la aplicación puede revelar que se modificó recientemente una asignación de rutas o que un middleware está rechazando la solicitud antes de que llegue a tu controlador.

              6. Revisa la Configuración del Servidor Web

              La mayoría de los errores 405 persistentes están en los archivos de configuración de tu servidor web. Aquí es donde una revisión cuidadosa marca la diferencia.

              Apache (.htaccess)

              Dos cosas en .htaccess causan la mayoría de los errores 405 relacionados con Apache:

              • Reglas de mod_rewrite que redirigen el tráfico sin conservar todos los métodos HTTP: una RewriteRule diseñada para GET que ignora POST romperá todos los envíos de formularios en la ruta afectada.
              • Directivas Limit que restringen qué métodos acepta un recurso. Son medidas de seguridad, pero una directiva Limit mal configurada puede bloquear solicitudes POST o PUT legítimas en directorios completos.

              Comenta las directivas sospechosas con # y reinicia Apache para probar. Reactívalas una por una para aislar el problema.

                NGINX (nginx.conf)

                En NGINX, verifica:

                • Bloques Location que excluyen implícitamente ciertos métodos HTTP: si un bloque Location solo gestiona GET, todas las solicitudes POST a esa ruta fallarán.
                • Directivas error_page que redirigen errores 405 a una página estática que a su vez no acepta el método de solicitud original, lo que crea un bucle de rechazo infinito.

                Después de editar, valida la configuración con nginx -t antes de recargar. Un error de sintaxis en nginx.conf puede dejar todo el sitio sin servicio.

                  7. Depura tu Código y Scripts

                  A veces el problema no está en la configuración del servidor. Está en el código de tu aplicación.

                  Culpables comunes:

                  • El atributo action de un formulario apunta a un endpoint que solo acepta GET, pero el formulario utiliza method=»POST».
                  • Una llamada fetch() de JavaScript o XMLHttpRequest envía el método HTTP incorrecto para el endpoint de la API.
                  • Un middleware del framework intercepta y rechaza silenciosamente ciertos métodos antes de que tu controlador de rutas los procese.

                  Clona tu sitio en un entorno de desarrollo local y reproduce el error. En WordPress, desactiva todos los plugins y cambia a un tema por defecto (como Twenty Twenty-Four) para aislar el problema. Si el error 405 desaparece, vuelve a activar los plugins uno por uno. Usa la pestaña Network de tu navegador para inspeccionar la solicitud exacta: método, URL, cabeceras y código de estado de la respuesta.

                  Escribe pruebas unitarias que comprueben cada endpoint con todos los métodos HTTP que debería aceptar. Las pruebas automatizadas detectan estos desajustes durante el desarrollo en lugar de hacerlo en producción.

                    8. Restaura tu sitio web desde una copia de seguridad

                    Si ya has agotado todas las demás opciones, restaura todo el sitio desde una copia de seguridad. Esta es la opción radical, y funciona porque elimina todas las variables de una vez.

                    Elige la copia de seguridad más reciente de antes de que comenzara el error 405. Esto revierte tus archivos, base de datos y configuración a un estado conocido y funcional. Perderás cualquier cambio realizado después de ese punto de la copia de seguridad. Ese es el coste. Si no tienes copias de seguridad recientes, esta situación te convencerá de empezar a automatizarlas.

                    La mayoría de los paneles de control de hosting incluyen una función de restauración con un solo clic. Si no, sube manualmente la copia de seguridad de los archivos por FTP e importa la base de datos mediante phpMyAdmin. Tras la restauración, comprueba de inmediato las páginas que mostraban el 405 para confirmar que el error ha desaparecido. Luego averigua qué lo causó antes de volver a aplicar los cambios que provocaron el problema. Restaurar a ciegas y repetir los mismos cambios te devolverá al mismo estado defectuoso.

                    9. Corrige las reglas de Rewrite en .htaccess

                    Las reglas de Rewrite en .htaccess de Apache merecen su propia sección porque provocan un número desproporcionado de errores 405.

                    Abre .htaccess mediante un gestor de archivos o un cliente FTP. Busca cualquier línea que contenga R=405. Esa es una regla de rewrite que devuelve explícitamente un código de estado 405. Coméntala añadiendo # al inicio de la línea, guarda el archivo y limpia la caché de tu navegador.

                    Si el error 405 desaparece, ya has identificado la regla. Antes de eliminarla de forma permanente, investiga por qué se añadió. Alguien podría haberla puesto allí intencionadamente por motivos de seguridad. Si estaba bloqueando un método que tu aplicación necesita, elimínala. Si estaba protegiendo contra un vector de ataque real, busca una forma más específica de implementar esa restricción.

                    10. Corrige los permisos de archivos

                    Los permisos de archivos incorrectos pueden provocar errores 405 de formas inesperadas. Si el proceso del servidor web no tiene la propiedad correcta de tus archivos, puede fallar al ejecutar scripts, y el error resultante a veces se manifiesta como un 405 en lugar del esperado 403 Forbidden. He visto que esto ocurre tras migraciones de servidor donde los archivos se transfirieron con el propietario incorrecto, o tras ejecutar un comando chmod masivo que cambió los permisos en toda la raíz del documento.

                    Permisos estándar para la mayoría de los servidores web:

                    • Directorios: 755
                    • Archivos: 644
                    • Propietario: el usuario del servidor web (www-data en Debian/Ubuntu, apache en CentOS)

                    Corrige la propiedad de manera recursiva: chown -R www-data:www-data /var/www/yoursite

                    Corrige los permisos de los directorios: find /var/www/yoursite -type d -exec chmod 755 {} \;

                    Corrige los permisos de los archivos: find /var/www/yoursite -type f -exec chmod 644 {} \;

                    11. Verifica los registros A de DNS

                    Esta causa es poco frecuente, pero si nada más ha funcionado, revisa tu DNS. Los registros A incorrectos pueden dirigir el tráfico a un servidor completamente erróneo, y ese servidor podría no admitir los métodos HTTP de los que depende tu aplicación.

                    Inicia sesión en tu registrador de dominio o en el panel de gestión de DNS y confirma tus registros A:

                    • Tipo: Debe ser A
                    • Nombre: @ para el dominio raíz, o el nombre del subdominio
                    • Apunta a: La dirección IP correcta de tu servidor de hosting real
                    • TTL: Normalmente 14400 segundos (4 horas)

                    Esto es más relevante si migraste servidores recientemente, cambiaste de proveedor de hosting o actualizaste la configuración de DNS. La propagación del DNS puede tardar hasta 48 horas, por lo que incluso los cambios correctos podrían no haberse propagado todavía. Usa una herramienta como dig o un verificador de DNS en línea para confirmar lo que ven los resolutores.

                    Buenas prácticas para el mantenimiento de sitios web

                    Arreglar el error 405 una sola vez no es suficiente. Evitar que vuelva a aparecer es el verdadero trabajo. La mayoría de estos errores provienen de cambios: actualizaciones, nuevos plugins, ediciones de configuración, modificaciones en la base de datos. Algunos hábitos contribuyen significativamente a mantener tu sitio estable.

                    Revisa los registros de tu servidor semanalmente. No solo cuando algo se rompe. Hazlo semanalmente. Detectarás señales de advertencia, picos inusuales de errores 4xx, avisos de métodos obsoletos y patrones de solicitudes fallidas antes de que se conviertan en errores visibles que alejen a los visitantes.

                    Nunca actualices producción sin probar primero en un entorno de pruebas. Esta única práctica previene la mayoría de los errores 405 que me he encontrado en la práctica real. Configurar un entorno de pruebas lleva cinco minutos y ahorra horas de resolución de emergencias a las 2:00 de un sábado.

                    Automatiza tus copias de seguridad y verifica su integridad restaurando una periódicamente. Una copia de seguridad que nunca has verificado es solo un archivo que podría funcionar. «Podría» no es suficiente cuando tu página de pago devuelve errores 405 el día del lanzamiento.

                    Documenta los cambios en la configuración de tu servidor. Mantén un registro de cambios para .htaccess, nginx.conf y cualquier modificación de reglas del cortafuegos. Cuando un error 405 aparezca tres meses después de que alguien ajustara una directiva Limit, sabrás exactamente qué cambió y cuándo.

                    Preguntas frecuentes: error 405 Method Not Allowed

                    ¿Qué es un error 405 Method Not Allowed?

                    El código de estado 405 es una respuesta de error HTTP que significa que el servidor reconoció la URL y encontró el recurso, pero rechazó el método HTTP específico usado en la solicitud. Enviar un DELETE a una página que solo acepta GET y POST devuelve un 405. El recurso existe; el método es incorrecto. El servidor debería incluir una cabecera Allow en su respuesta 405 indicando qué métodos acepta el recurso, lo que te proporciona información inmediata sobre cómo corregir la solicitud.

                    ¿Cuál es la diferencia entre 404 y 405?

                    Un 404 significa que el servidor no pudo encontrar nada en esa URL. El recurso no existe o la ruta es incorrecta. Un 405 significa que el recurso está presente y la URL es correcta, pero el servidor no procesará el método HTTP que enviaste. Un 404 es «no hay nada aquí». Un 405 es «esto está aquí, pero no puedes hacer eso con él». La solución para un 404 es corregir la URL o crear el recurso que falta. La solución para un 405 es utilizar el método HTTP correcto o reconfigurar el servidor para admitir el que estás enviando.

                    ¿Puede un plugin causar un error 405?

                    Sí, y es una de las causas más comunes en sitios WordPress. Los plugins pueden registrar rutas personalizadas, alterar las reglas de rewrite en .htaccess, modificar registros de la base de datos y cambiar cómo tu servidor gestiona las solicitudes entrantes. Si un 405 apareció justo después de instalar o actualizar un plugin, desactívalo primero: es la forma más rápida de confirmar la causa.

                    ¿Cómo soluciono un 405 en NGINX?

                    Abre tu archivo nginx.conf y busca los bloques location que restrinjan métodos HTTP. Revisa las directivas error_page que redirigen las respuestas 405 a páginas estáticas que no aceptan el método original. Después de cualquier cambio, ejecuta nginx -t para validar la sintaxis de la configuración antes de recargar con systemctl reload nginx. Si estás en un hosting gestionado sin acceso a los archivos de configuración, contacta con el equipo de soporte de tu proveedor.

                    ¿Un error 405 afecta el posicionamiento SEO?

                    Puede hacerlo. Si un rastreador de motores de búsqueda encuentra un 405 en una página que intenta indexar, no puede procesar ese contenido. Los errores 405 persistentes indican problemas de accesibilidad para los motores de búsqueda, lo que afecta a tu presupuesto de rastreo y puede hacer que las páginas sean desindexadas por completo. Los usuarios que abandonan el sitio por páginas de error también perjudican métricas de interacción, como el tiempo en el sitio y las páginas por sesión, que son señales de posicionamiento indirectas. Corrige los errores 405 rápidamente, especialmente en las páginas que reciben tráfico orgánico. Usa Google Search Console para monitorizar errores de rastreo y configura alertas para detectarlos antes de que tus posiciones se vean afectadas. Un error que persiste durante algunas horas probablemente no causará un daño duradero. Un error que se prolonga durante semanas sí lo hará.

                    Scroll al inicio