
{"id":29453,"date":"2026-03-26T12:16:20","date_gmt":"2026-03-26T11:16:20","guid":{"rendered":"https:\/\/contabo.com\/blog\/como-solucionar-el-error-405-method-not-allowed\/"},"modified":"2026-04-09T17:17:18","modified_gmt":"2026-04-09T15:17:18","slug":"como-solucionar-el-error-405-method-not-allowed","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/es\/como-solucionar-el-error-405-method-not-allowed\/","title":{"rendered":"C\u00f3mo solucionar el error 405 Method Not Allowed"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error.webp\" alt=\"How to Fix the 405 Method Not Allowed Error\" class=\"wp-image-27980\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error.webp 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error-600x315.webp 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error-768x403.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Haces clic en Enviar en un formulario. La p\u00e1gina muestra un error 405 Method Not Allowed. Sin traza de pila ni ninguna pista \u00fatil: solo un rechazo directo de tu servidor. Bienvenido a uno de los c\u00f3digos de error HTTP m\u00e1s molestos.<\/p>\n\n\n\n<p>El c\u00f3digo de estado HTTP 405 te dice una cosa muy concreta: el servidor encontr\u00f3 el recurso, entendi\u00f3 tu solicitud y rechaz\u00f3 el m\u00e9todo HTTP que utilizaste. La p\u00e1gina existe. El servidor simplemente no ejecutar\u00e1 lo que le pediste. Esto no es un 404. La URL es correcta. Algo en la configuraci\u00f3n del servidor, en el c\u00f3digo de tu aplicaci\u00f3n o en un plugin instalado recientemente est\u00e1 rechazando una solicitud POST o PUT perfectamente v\u00e1lida.<\/p>\n\n\n\n<p>A continuaci\u00f3n encontrar\u00e1s un an\u00e1lisis de todas las causas que he visto en producci\u00f3n, adem\u00e1s de 11 soluciones ordenadas desde \u00ablleva treinta segundos\u00bb hasta \u00abrestaurar todo desde una copia de seguridad\u00bb. Si eres desarrollador y te encuentras con este error en un contexto de API, o eres el due\u00f1o de un sitio mirando un formulario de contacto roto, la soluci\u00f3n casi siempre est\u00e1 en el mismo pu\u00f1ado de lugares.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>C\u00f3digo de error <\/strong><\/td><td>405 M\u00e9todo No Permitido <\/td><\/tr><tr><td><strong>Tipo de error <\/strong><\/td><td>Error del lado del cliente (normalmente causado por el servidor)<\/td><\/tr><tr><td><strong>Variantes comunes<\/strong><\/td><td>HTTP Error 405, HTTP 405, 405 Not Allowed, Method Not Allowed, HTTP Error 405 &#8211; Method Not Allowed<\/td><\/tr><tr><td><strong>Causas t\u00edpicas <\/strong><\/td><td>M\u00e9todo HTTP incorrecto, mala configuraci\u00f3n del servidor, restricciones de la API, reglas del WAF, conflictos con plugins<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-que-causa-el-error-405\">Qu\u00e9 causa el error 405 <\/h2>\n\n\n\n<p>El error 405 se produce cuando el m\u00e9todo de la solicitud HTTP no coincide con lo que acepta el recurso. El concepto es sencillo; lo dif\u00edcil es identificar qu\u00e9 capa introdujo la discrepancia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-metodo-http-no-compatible\">M\u00e9todo HTTP no compatible<\/h3>\n\n\n\n<p>Cada recurso web est\u00e1 configurado para aceptar m\u00e9todos HTTP espec\u00edficos. GET obtiene datos. POST env\u00eda datos. PUT actualiza. DELETE elimina. Si se env\u00eda una solicitud DELETE a una p\u00e1gina HTML est\u00e1tica que solo admite GET, el servidor devuelve un 405: encontr\u00f3 la p\u00e1gina pero se niega a procesar esa acci\u00f3n. Esta es la causa m\u00e1s com\u00fan y normalmente indica que tu c\u00f3digo, la acci\u00f3n del formulario o la llamada a la API apuntan al endpoint incorrecto.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-configuracion-incorrecta-del-servidor\">Configuraci\u00f3n incorrecta del servidor<\/h3>\n\n\n\n<p>Apache usa archivos .htaccess. NGINX usa nginx.conf. Una sola directiva mal colocada en cualquiera de los dos puede bloquear un m\u00e9todo HTTP completo en todo un \u00e1rbol de directorios sin previo aviso. Una vez localic\u00e9 un error 405 en una directiva Limit que alguien hab\u00eda copiado de un blog sobre refuerzo de seguridad sin entender qu\u00e9 hac\u00eda. Bloqueaba POST en todos los archivos HTML de la ra\u00edz del sitio. El formulario de contacto, la p\u00e1gina de pago, la pantalla de inicio de sesi\u00f3n: todo roto. La soluci\u00f3n fue borrar dos l\u00edneas. Encontrar esas dos l\u00edneas llev\u00f3 buena parte de una tarde, porque nadie recordaba haberlas incluido.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-restricciones-de-la-api\">Restricciones de la API<\/h3>\n\n\n\n<p>Las APIs son estrictas con respecto a qu\u00e9 m\u00e9todos de solicitud HTTP aceptan. Un endpoint dise\u00f1ado para POST no responder\u00e1 a PUT solo porque tu c\u00f3digo cliente env\u00ede uno. Si est\u00e1s viendo errores 405 solo en llamadas a la API, revisa la documentaci\u00f3n de la API y verifica que utilizas el m\u00e9todo correcto para cada endpoint. Esto es especialmente frecuente cuando se trabaja con APIs de terceros que versionan sus endpoints y marcan como obsoletos m\u00e9todos anteriores.<\/p>\n\n\n\n<p>Las APIs REST suelen ser las principales sospechosas en estos casos. Una solicitud GET a un endpoint de recurso que solo admite POST devolver\u00e1 un 405 cada vez. Lo mismo ocurre con PATCH frente a PUT: algunas APIs los tratan como intercambiables, otras no. Lee la documentaci\u00f3n, revisa la cabecera Allow en la respuesta 405 (ah\u00ed se indican los m\u00e9todos que el endpoint realmente acepta) y ajusta tu solicitud en consecuencia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-reglas-del-cortafuegos-de-aplicaciones-web-waf\">Reglas del cortafuegos de aplicaciones web (WAF)<\/h3>\n\n\n\n<p>Un firewall de aplicaciones web puede anular por completo la configuraci\u00f3n de tu servidor. Las reglas del WAF suelen bloquear m\u00e9todos 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\u00f3n necesita DELETE para eliminar registros. <\/p>\n\n\n\n<p>Si habilitaste o actualizaste tu WAF recientemente y empezaron a aparecer errores 405, reduce las reglas de bloqueo de m\u00e9todos y vuelve a probar. Revisa el panel de tu proveedor de WAF para ver los registros que muestran qu\u00e9 reglas se activaron. Una seguridad excesiva crea sus propios problemas, y un 405 que bloquea funcionalidad leg\u00edtima es peor que el ataque te\u00f3rico que intenta prevenir.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-conflictos-entre-plugins-y-temas\">Conflictos entre plugins y temas<\/h3>\n\n\n\n<p>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\u00ed solo. Es la interacci\u00f3n con tu configuraci\u00f3n actual lo que provoca el fallo. Lo mismo ocurre con temas que incluyen funcionalidad personalizada o plugins incluidos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cambios-residuales-en-la-base-de-datos\">Cambios residuales en la base de datos<\/h3>\n\n\n\n<p>Algunas extensiones modifican tablas de la base de datos durante la instalaci\u00f3n y no limpian lo que dejaron cuando se eliminan. Los registros hu\u00e9rfanos en las tablas de opciones o en los registros de tipos de contenido personalizados pueden alterar la l\u00f3gica de enrutamiento de tu aplicaci\u00f3n. La aplicaci\u00f3n puede acabar enviando solicitudes usando el m\u00e9todo HTTP incorrecto porque su estado interno ya no se corresponde con la configuraci\u00f3n real del servidor.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-solucionar-el-error-405\">C\u00f3mo solucionar el error 405 <\/h2>\n\n\n\n<p>Ve recorri\u00e9ndolos en este orden. Los primeros son comprobaciones r\u00e1pidas que resuelven la mayor\u00eda de los casos. Los \u00faltimos requieren profundizar en la configuraci\u00f3n interna del servidor y en el c\u00f3digo de la aplicaci\u00f3n.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-verifica-que-la-url-sea-correcta\">1. Verifica que la URL sea correcta <\/h3>\n\n\n\n<p>Empieza por lo m\u00e1s obvio, aunque resulte obvio. Los errores tipogr\u00e1ficos en la configuraci\u00f3n de las URLs provocan errores 405 m\u00e1s a menudo de lo que a nadie le gusta admitir.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rutas mal escritas (\/usres en lugar de \/users)<\/li>\n\n\n\n<li>Problemas de sensibilidad a may\u00fasculas y min\u00fasculas (algunos servidores tratan \/Page y \/page como URLs diferentes)<\/li>\n\n\n\n<li>Barras finales que redirigen silenciosamente a un controlador diferente<\/li>\n\n\n\n<li>Una ruta que apunta a un controlador que no admite el m\u00e9todo HTTP que se est\u00e1 usando<\/li>\n<\/ul>\n\n\n\n<p>Abre las herramientas de desarrollo del navegador, ve a la pesta\u00f1a Network y observa la solicitud que est\u00e1 fallando. Comprueba el m\u00e9todo (GET, POST, etc.) y la URL exacta a la que apunta. Luego comp\u00e1ralo con lo que espera tu aplicaci\u00f3n. Si hay una discrepancia, corrige la URL o el controlador. Si todo parece correcto, contin\u00faa.<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\"><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-revierte-las-actualizaciones-recientes\">2. Revierte las actualizaciones recientes<\/h3>\n\n\n\n<p>Si el error 405 apareci\u00f3 justo despu\u00e9s de una actualizaci\u00f3n, no te quedes una hora depur\u00e1ndolo. Revi\u00e9rtela primero. Puedes investigar despu\u00e9s, con el sitio en funcionamiento.<\/p>\n\n\n\n<p>Haz una copia de seguridad de tu sitio antes de revertir. Luego revierte el cambio m\u00e1s reciente. En WordPress, un plugin como WP Rollback gestiona esto para el n\u00facleo, 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\u00eda un informe de error o busca una alternativa.<\/p>\n\n\n\n<p>Un h\u00e1bito que evitar\u00eda la mayor\u00eda de estos incidentes: prueba cada actualizaci\u00f3n en un entorno de pruebas antes de llevarla a producci\u00f3n.<\/p>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\"><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-inspecciona-los-cambios-en-la-base-de-datos\">3. Inspecciona los cambios en la base de datos<\/h3>\n\n\n\n<p>Las extensiones a veces escriben en tu base de datos durante la instalaci\u00f3n y no limpian lo que dejaron cuando se eliminan. Estos registros hu\u00e9rfanos pueden alterar la l\u00f3gica de enrutamiento de tu aplicaci\u00f3n, lo que puede provocar que env\u00ede solicitudes HTTP con el m\u00e9todo incorrecto.<\/p>\n\n\n\n<p>Abre phpMyAdmin o tu herramienta de base de datos, selecciona tu base de datos, ve a la pesta\u00f1a SQL y ejecuta la siguiente consulta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT UNIX_TIMESTAMP(MAX(UPDATE_TIME)) AS last_update<br><br>FROM information_schema.tables<br><br>WHERE TABLE_SCHEMA = 'your_database_name'<br><br>GROUP BY TABLE_SCHEMA;<\/code><\/pre>\n\n\n\n<p>Si la marca de tiempo coincide con el momento en que empez\u00f3 el error 405, revisa las tablas modificadas recientemente en busca de registros que parezcan incorrectos. Conc\u00e9ntrate 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\u00f3n sin una red de seguridad es buscarte un problema peor que el que est\u00e1s intentando solucionar.<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\"><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-4-elimina-plugins-o-temas-defectuosos\">4. Elimina plugins o temas defectuosos<\/h3>\n\n\n\n<p>En sitios basados en CMS, un plugin o tema instalado recientemente es el desencadenante m\u00e1s com\u00fan de errores 405. El nuevo c\u00f3digo registra rutas en conflicto, modifica la configuraci\u00f3n a nivel de servidor o cambia la forma en que tu aplicaci\u00f3n procesa las solicitudes HTTP.<\/p>\n\n\n\n<p>En WordPress, ve al panel de administraci\u00f3n, abre Plugins y desactiva lo que hayas instalado m\u00e1s 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.<\/p>\n\n\n\n<p>\u00bfNo puedes acceder al panel de administraci\u00f3n? Con\u00e9ctate al servidor por SSH o FTP y cambia el nombre de la carpeta del plugin dentro de wp-content\/plugins\/. WordPress desactiva autom\u00e1ticamente cualquier plugin que no pueda encontrar. El mismo enfoque se aplica a los temas en wp-content\/themes\/. Prueba con otra extensi\u00f3n que ofrezca una funcionalidad similar una vez confirmado que la anterior era la causa del conflicto.<\/p>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\"><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-5-analiza-los-registros-del-lado-del-servidor\">5. Analiza los registros del lado del servidor<\/h3>\n\n\n\n<p>Cuando las soluciones r\u00e1pidas no funcionan, los registros son donde realmente encontrar\u00e1s la respuesta. Necesitas revisar dos tipos.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-registros-del-servidor\">Registros del servidor<\/h4>\n\n\n\n<p>Apache y NGINX mantienen registros de acceso y registros de errores. El registro de acceso almacena cada solicitud, incluyendo el m\u00e9todo HTTP, la URL y el c\u00f3digo de estado de la respuesta. El registro de errores explica por qu\u00e9 el servidor rechaz\u00f3 la solicitud. Estos dos juntos cuentan la historia completa.<\/p>\n\n\n\n<p>Los registros de Apache se encuentran en <code>\/var\/log\/apache2\/<\/code> en Debian\/Ubuntu o en <code>\/var\/log\/httpd\/<\/code> en CentOS\/RHEL. NGINX los mantiene en <code>\/var\/log\/nginx\/<\/code>.<\/p>\n\n\n\n<p>Usa tail <code>-f \/var\/log\/apache2\/error.log<\/code> para observar el registro de errores en tiempo real. Provoca el error 405 en tu navegador y luego revisa la entrada m\u00e1s reciente del registro. Te dir\u00e1 exactamente qu\u00e9 regla o directiva provoc\u00f3 el rechazo.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-registros-de-la-aplicacion\">Registros de la aplicaci\u00f3n<\/h4>\n\n\n\n<p>Tu aplicaci\u00f3n web mantiene sus propios registros separados del servidor. Estos contienen registros de depuraci\u00f3n, trazas de excepciones y registros de auditor\u00eda que muestran c\u00f3mo la aplicaci\u00f3n proces\u00f3 internamente la solicitud. Si los registros a nivel de servidor se ven limpios pero el error 405 sigue ocurriendo, la propia aplicaci\u00f3n est\u00e1 generando el error mediante su l\u00f3gica interna de enrutamiento.<\/p>\n\n\n\n<p>Revisa el directorio de registros en la carpeta ra\u00edz de tu aplicaci\u00f3n. En WordPress, habilita WP_DEBUG y WP_DEBUG_LOG en wp-config.php para registrar errores a nivel de aplicaci\u00f3n 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\u00f3n puede revelar que se modific\u00f3 recientemente una asignaci\u00f3n de rutas o que un middleware est\u00e1 rechazando la solicitud antes de que llegue a tu controlador.<\/p>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\"><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-6-revisa-la-configuracion-del-servidor-web\">6. Revisa la Configuraci\u00f3n del Servidor Web<\/h3>\n\n\n\n<p>La mayor\u00eda de los errores 405 persistentes est\u00e1n en los archivos de configuraci\u00f3n de tu servidor web. Aqu\u00ed es donde una revisi\u00f3n cuidadosa marca la diferencia.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-apache-htaccess\">Apache (.htaccess)<\/h4>\n\n\n\n<p>Dos cosas en .htaccess causan la mayor\u00eda de los errores 405 relacionados con Apache:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reglas de mod_rewrite<\/strong> que redirigen el tr\u00e1fico sin conservar todos los m\u00e9todos HTTP: una RewriteRule dise\u00f1ada para GET que ignora POST romper\u00e1 todos los env\u00edos de formularios en la ruta afectada.<\/li>\n\n\n\n<li><strong>Directivas Limit<\/strong> que restringen qu\u00e9 m\u00e9todos acepta un recurso. Son medidas de seguridad, pero una directiva Limit mal configurada puede bloquear solicitudes POST o PUT leg\u00edtimas en directorios completos.<\/li>\n<\/ul>\n\n\n\n<p>Comenta las directivas sospechosas con # y reinicia Apache para probar. React\u00edvalas una por una para aislar el problema.<\/p>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\"><\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-nginx-nginx-conf\">NGINX (nginx.conf)<\/h4>\n\n\n\n<p>En NGINX, verifica:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bloques Location <\/strong>que excluyen impl\u00edcitamente ciertos m\u00e9todos HTTP: si un bloque Location solo gestiona GET, todas las solicitudes POST a esa ruta fallar\u00e1n.<\/li>\n\n\n\n<li><strong>Directivas error_page <\/strong>que redirigen errores 405 a una p\u00e1gina est\u00e1tica que a su vez no acepta el m\u00e9todo de solicitud original, lo que crea un bucle de rechazo infinito.<\/li>\n<\/ul>\n\n\n\n<p>Despu\u00e9s de editar, valida la configuraci\u00f3n con nginx -t antes de recargar. Un error de sintaxis en nginx.conf puede dejar todo el sitio sin servicio.<\/p>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\"><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-7-depura-tu-codigo-y-scripts\">7. Depura tu C\u00f3digo y Scripts<\/h3>\n\n\n\n<p>A veces el problema no est\u00e1 en la configuraci\u00f3n del servidor. Est\u00e1 en el c\u00f3digo de tu aplicaci\u00f3n.<\/p>\n\n\n\n<p>Culpables comunes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El atributo action de un formulario apunta a un endpoint que solo acepta GET, pero el formulario utiliza method=\u00bbPOST\u00bb.<\/li>\n\n\n\n<li>Una llamada fetch() de JavaScript o XMLHttpRequest env\u00eda el m\u00e9todo HTTP incorrecto para el endpoint de la API.<\/li>\n\n\n\n<li>Un middleware del framework intercepta y rechaza silenciosamente ciertos m\u00e9todos antes de que tu controlador de rutas los procese.<\/li>\n<\/ul>\n\n\n\n<p>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\u00f1a Network de tu navegador para inspeccionar la solicitud exacta: m\u00e9todo, URL, cabeceras y c\u00f3digo de estado de la respuesta.<\/p>\n\n\n\n<p>Escribe pruebas unitarias que comprueben cada endpoint con todos los m\u00e9todos HTTP que deber\u00eda aceptar. Las pruebas automatizadas detectan estos desajustes durante el desarrollo en lugar de hacerlo en producci\u00f3n.<\/p>\n\n\n\n<ol start=\"8\" class=\"wp-block-list\"><\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-8-restaura-tu-sitio-web-desde-una-copia-de-seguridad\">8. Restaura tu sitio web desde una copia de seguridad<\/h3>\n\n\n\n<p>Si ya has agotado todas las dem\u00e1s opciones, restaura todo el sitio desde una copia de seguridad. Esta es la opci\u00f3n radical, y funciona porque elimina todas las variables de una vez.<\/p>\n\n\n\n<p>Elige la copia de seguridad m\u00e1s reciente de antes de que comenzara el error 405. Esto revierte tus archivos, base de datos y configuraci\u00f3n a un estado conocido y funcional. Perder\u00e1s cualquier cambio realizado despu\u00e9s de ese punto de la copia de seguridad. Ese es el coste. Si no tienes copias de seguridad recientes, esta situaci\u00f3n te convencer\u00e1 de empezar a automatizarlas.<\/p>\n\n\n\n<p>La mayor\u00eda de los paneles de control de hosting incluyen una funci\u00f3n de restauraci\u00f3n 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\u00f3n, comprueba de inmediato las p\u00e1ginas que mostraban el 405 para confirmar que el error ha desaparecido. Luego averigua qu\u00e9 lo caus\u00f3 antes de volver a aplicar los cambios que provocaron el problema. Restaurar a ciegas y repetir los mismos cambios te devolver\u00e1 al mismo estado defectuoso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-9-corrige-las-reglas-de-rewrite-en-htaccess\">9. Corrige las reglas de Rewrite en .htaccess<\/h3>\n\n\n\n<p>Las reglas de Rewrite en .htaccess de Apache merecen su propia secci\u00f3n porque provocan un n\u00famero desproporcionado de errores 405.<\/p>\n\n\n\n<p>Abre .htaccess mediante un gestor de archivos o un cliente FTP. Busca cualquier l\u00ednea que contenga R=405. Esa es una regla de rewrite que devuelve expl\u00edcitamente un c\u00f3digo de estado 405. Com\u00e9ntala a\u00f1adiendo # al inicio de la l\u00ednea, guarda el archivo y limpia la cach\u00e9 de tu navegador.<\/p>\n\n\n\n<p>Si el error 405 desaparece, ya has identificado la regla. Antes de eliminarla de forma permanente, investiga por qu\u00e9 se a\u00f1adi\u00f3. Alguien podr\u00eda haberla puesto all\u00ed intencionadamente por motivos de seguridad. Si estaba bloqueando un m\u00e9todo que tu aplicaci\u00f3n necesita, elim\u00ednala. Si estaba protegiendo contra un vector de ataque real, busca una forma m\u00e1s espec\u00edfica de implementar esa restricci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-10-corrige-los-permisos-de-archivos\">10. Corrige los permisos de archivos<\/h3>\n\n\n\n<p>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\u00f3 los permisos en toda la ra\u00edz del documento.<\/p>\n\n\n\n<p>Permisos est\u00e1ndar para la mayor\u00eda de los servidores web:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Directorios: <code>755<\/code><\/li>\n\n\n\n<li>Archivos: <code>644<\/code><\/li>\n\n\n\n<li>Propietario: el usuario del servidor web (<code>www-data<\/code> en Debian\/Ubuntu, <code>apache <\/code>en CentOS)<\/li>\n<\/ul>\n\n\n\n<p>Corrige la propiedad de manera recursiva: <code>chown -R www-data:www-data \/var\/www\/yoursite<\/code><\/p>\n\n\n\n<p>Corrige los permisos de los directorios: <code>find \/var\/www\/yoursite -type d -exec chmod 755 {} \\;<\/code><\/p>\n\n\n\n<p>Corrige los permisos de los archivos: <code>find \/var\/www\/yoursite -type f -exec chmod 644 {} \\;<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-11-verifica-los-registros-a-de-dns\">11. Verifica los registros A de DNS<\/h3>\n\n\n\n<p>Esta causa es poco frecuente, pero si nada m\u00e1s ha funcionado, revisa tu DNS. Los registros A incorrectos pueden dirigir el tr\u00e1fico a un servidor completamente err\u00f3neo, y ese servidor podr\u00eda no admitir los m\u00e9todos HTTP de los que depende tu aplicaci\u00f3n.<\/p>\n\n\n\n<p>Inicia sesi\u00f3n en tu registrador de dominio o en el panel de gesti\u00f3n de DNS y confirma tus registros A:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tipo: <\/strong>Debe ser A<\/li>\n\n\n\n<li><strong>Nombre: <\/strong>@ para el dominio ra\u00edz, o el nombre del subdominio<\/li>\n\n\n\n<li><strong>Apunta a: <\/strong>La direcci\u00f3n IP correcta de tu servidor de hosting real<\/li>\n\n\n\n<li><strong>TTL: <\/strong>Normalmente 14400 segundos (4 horas)<\/li>\n<\/ul>\n\n\n\n<p>Esto es m\u00e1s relevante si migraste servidores recientemente, cambiaste de proveedor de hosting o actualizaste la configuraci\u00f3n de DNS. La propagaci\u00f3n del DNS puede tardar hasta 48 horas, por lo que incluso los cambios correctos podr\u00edan no haberse propagado todav\u00eda. Usa una herramienta como dig o un verificador de DNS en l\u00ednea para confirmar lo que ven los resolutores.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-buenas-practicas-para-el-mantenimiento-de-sitios-web\">Buenas pr\u00e1cticas para el mantenimiento de sitios web<\/h2>\n\n\n\n<p>Arreglar el error 405 una sola vez no es suficiente. Evitar que vuelva a aparecer es el verdadero trabajo. La mayor\u00eda de estos errores provienen de cambios: actualizaciones, nuevos plugins, ediciones de configuraci\u00f3n, modificaciones en la base de datos. Algunos h\u00e1bitos contribuyen significativamente a mantener tu sitio estable.<\/p>\n\n\n\n<p>Revisa los registros de tu servidor semanalmente. No solo cuando algo se rompe. Hazlo semanalmente. Detectar\u00e1s se\u00f1ales de advertencia, picos inusuales de errores 4xx, avisos de m\u00e9todos obsoletos y patrones de solicitudes fallidas antes de que se conviertan en errores visibles que alejen a los visitantes.<\/p>\n\n\n\n<p>Nunca actualices producci\u00f3n sin probar primero en un entorno de pruebas. Esta \u00fanica pr\u00e1ctica previene la mayor\u00eda de los errores 405 que me he encontrado en la pr\u00e1ctica real. Configurar un entorno de pruebas lleva cinco minutos y ahorra horas de resoluci\u00f3n de emergencias a las 2:00 de un s\u00e1bado.<\/p>\n\n\n\n<p>Automatiza tus copias de seguridad y verifica su integridad restaurando una peri\u00f3dicamente. Una copia de seguridad que nunca has verificado es solo un archivo que podr\u00eda funcionar. \u00abPodr\u00eda\u00bb no es suficiente cuando tu p\u00e1gina de pago devuelve errores 405 el d\u00eda del lanzamiento.<\/p>\n\n\n\n<p>Documenta los cambios en la configuraci\u00f3n de tu servidor. Mant\u00e9n un registro de cambios para .htaccess, nginx.conf y cualquier modificaci\u00f3n de reglas del cortafuegos. Cuando un error 405 aparezca tres meses despu\u00e9s de que alguien ajustara una directiva Limit, sabr\u00e1s exactamente qu\u00e9 cambi\u00f3 y cu\u00e1ndo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-preguntas-frecuentes-error-405-method-not-allowed\">Preguntas frecuentes: error 405 Method Not Allowed<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1773928869879\"><strong class=\"schema-faq-question\">\u00bfQu\u00e9 es un error 405 Method Not Allowed?<\/strong> <p class=\"schema-faq-answer\">El c\u00f3digo de estado 405 es una respuesta de error HTTP que significa que el servidor reconoci\u00f3 la URL y encontr\u00f3 el recurso, pero rechaz\u00f3 el m\u00e9todo HTTP espec\u00edfico usado en la solicitud. Enviar un DELETE a una p\u00e1gina que solo acepta GET y POST devuelve un 405. El recurso existe; el m\u00e9todo es incorrecto. El servidor deber\u00eda incluir una cabecera Allow en su respuesta 405 indicando qu\u00e9 m\u00e9todos acepta el recurso, lo que te proporciona informaci\u00f3n inmediata sobre c\u00f3mo corregir la solicitud.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1773928878951\"><strong class=\"schema-faq-question\">\u00bfCu\u00e1l es la diferencia entre 404 y 405?<\/strong> <p class=\"schema-faq-answer\">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\u00e1 presente y la URL es correcta, pero el servidor no procesar\u00e1 el m\u00e9todo HTTP que enviaste. Un 404 es \u00abno hay nada aqu\u00ed\u00bb. Un 405 es \u00abesto est\u00e1 aqu\u00ed, pero no puedes hacer eso con \u00e9l\u00bb. La soluci\u00f3n para un 404 es corregir la URL o crear el recurso que falta. La soluci\u00f3n para un 405 es utilizar el m\u00e9todo HTTP correcto o reconfigurar el servidor para admitir el que est\u00e1s enviando.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1773928887994\"><strong class=\"schema-faq-question\">\u00bfPuede un plugin causar un error 405?<\/strong> <p class=\"schema-faq-answer\">S\u00ed, y es una de las causas m\u00e1s 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\u00f3mo tu servidor gestiona las solicitudes entrantes. Si un 405 apareci\u00f3 justo despu\u00e9s de instalar o actualizar un plugin, desact\u00edvalo primero: es la forma m\u00e1s r\u00e1pida de confirmar la causa.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1773928897560\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo soluciono un 405 en NGINX?<\/strong> <p class=\"schema-faq-answer\">Abre tu archivo nginx.conf y busca los bloques location que restrinjan m\u00e9todos HTTP. Revisa las directivas error_page que redirigen las respuestas 405 a p\u00e1ginas est\u00e1ticas que no aceptan el m\u00e9todo original. Despu\u00e9s de cualquier cambio, ejecuta nginx -t para validar la sintaxis de la configuraci\u00f3n antes de recargar con systemctl reload nginx. Si est\u00e1s en un hosting gestionado sin acceso a los archivos de configuraci\u00f3n, contacta con el equipo de soporte de tu proveedor.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1773928906042\"><strong class=\"schema-faq-question\">\u00bfUn error 405 afecta el posicionamiento SEO?<\/strong> <p class=\"schema-faq-answer\">Puede hacerlo. Si un rastreador de motores de b\u00fasqueda encuentra un 405 en una p\u00e1gina que intenta indexar, no puede procesar ese contenido. Los errores 405 persistentes indican problemas de accesibilidad para los motores de b\u00fasqueda, lo que afecta a tu presupuesto de rastreo y puede hacer que las p\u00e1ginas sean desindexadas por completo. Los usuarios que abandonan el sitio por p\u00e1ginas de error tambi\u00e9n perjudican m\u00e9tricas de interacci\u00f3n, como el tiempo en el sitio y las p\u00e1ginas por sesi\u00f3n, que son se\u00f1ales de posicionamiento indirectas. Corrige los errores 405 r\u00e1pidamente, especialmente en las p\u00e1ginas que reciben tr\u00e1fico org\u00e1nico. 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\u00e1 un da\u00f1o duradero. Un error que se prolonga durante semanas s\u00ed lo har\u00e1.<\/p> <\/div> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Haces clic en Enviar en un formulario. La p\u00e1gina muestra un error 405 Method Not Allowed. Sin traza de pila ni ninguna pista \u00fatil: solo un rechazo directo de tu servidor. Bienvenido a uno de los c\u00f3digos de error HTTP m\u00e1s molestos. El c\u00f3digo de estado HTTP 405 te dice una cosa muy concreta: el [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":27982,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1988],"tags":[],"ppma_author":[3402],"class_list":["post-29453","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error.webp",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error-150x150.webp",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error-600x315.webp",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error-768x403.webp",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error.webp",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error.webp",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/02\/blog-head_how2-fix-the-405-method-not-allowed-error.webp",1200,630,false]},"uagb_author_info":{"display_name":"Milan Ivanovic","author_link":"https:\/\/contabo.com\/blog\/es\/author\/milan\/"},"uagb_comment_info":0,"uagb_excerpt":"Haces clic en Enviar en un formulario. La p\u00e1gina muestra un error 405 Method Not Allowed. Sin traza de pila ni ninguna pista \u00fatil: solo un rechazo directo de tu servidor. Bienvenido a uno de los c\u00f3digos de error HTTP m\u00e1s molestos. El c\u00f3digo de estado HTTP 405 te dice una cosa muy concreta: el&hellip;","authors":[{"term_id":3402,"user_id":0,"is_guest":1,"slug":"contabro","display_name":"ContaBro","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/29453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=29453"}],"version-history":[{"count":5,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/29453\/revisions"}],"predecessor-version":[{"id":29845,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/29453\/revisions\/29845"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media\/27982"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=29453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=29453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=29453"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=29453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}