Por qué es un problema que WordPress modifique automáticamente el archivo .htaccess

Por si no lo sabías, si los permisos de archivo lo permiten, WordPress modificará automáticamente el contenido del archivo .htaccess de tu web.

Lo hace en varias ocasiones, como al añadir o modificar las reglas de rewrite necesarias para la funcionalidad de enlaces permanentes de WordPress.

En este artículo me gustaría explicarte cómo funciona, porqué puede ser peligroso, y cómo evitar que pase.

¿Qué hace WordPress en el archivo .htaccess?

portatil-htaccess-wordpress

Cuando activas enlaces permanentes diferentes a los por defecto en Ajustes -> Enlaces permanentes, WordPress modificará automáticamente el archivo .htaccess a las últimas reglas de rewrite.

Así que, si tu archivo .htaccess tiene permisos de escritura, lo más habitual, WordPress escribirá un bloque de directivas en este archivo, como estas:

Curiosamente, cuando quieres activar multisitio en tu web WordPress no modifica automáticamente el archivo .htaccess, sino que te informa de las reglas que debes añadir manualmente.

Pero en un WordPress sencillo añade estas reglas por su cuenta, pero resulta que WordPress tiene sus cosas a la hora de añadirlas, apunta:

  • # BEGIN WordPress y # END WordPress sirven como marcadores usados por WordPress
  • Si no existen los marcadores las reglas de enlaces permanentes se añadirán al final del archivo .htaccess
  • Si existen los marcadores, da igual lo que haya entre ellos, se actualizarán automáticamente
  • Puedes mover tus reglas de enlaces permanentes a cualquier parte, no hace falta que sea al final del archivo, moviendo el bloque entero de reglas, marcadores incluidos.
  • Si has personalizado tus reglas de enlaces permanentes dentro de los marcadores, los cambios los sustituirá WordPress por sus reglas
  • No hay modo de borrar la línea vacía antes del marcador de cierre

Así que, visto este comportamiento, el quid de la cuestión es que tienes que añadir tus reglas personalizadas de .htaccess siempre fuera de los marcadores BEGIN y END, de otro modo WordPress las sustituirá por las reglas de enlaces permanentes por defecto y las perderás.

¿Porqué esto no mola?

Vamos a resumir:

  • Las reglas de enlaces permanentes personalizadas dentro de los marcadores BEGINEND se perderán.
  • Si tienes reglas de enlaces permanentes fuera de los marcadores, o sin los marcadores, WordPress pasará de ellas y seguirá añadiendo sus reglas de rewrite al final del archivo .htaccess.

Y cualquiera de estos dos posibles escenarios es peligroso, especialmente si tus reglas personalizadas son necesarias para la funcionalidad de tu web, la navegación, etc.

Esto es especialmente común en tiendas online, donde es bastante habitual añadir reglas de rewrite personalizadas para acortar URLs de productos, eliminar lo que sobra, cosas así.

Y, claro, como el bloque de reglas personalizadas no está envuelto dentro de los marcadores BEGIN/END WordPress se toma la libertad de añadir su propio bloque de reglas de enlaces permanentes al final de tu archivo .htaccess.

Estas reglas de enlaces permanentes, dicho sea de paso, son bastante redundantes en ocasiones, y podrían interferir con las funcionalidades habituales de tu sitio, especialmente si tus reglas personalizadas no las has escrito adecuadamente, por ejemplo si olvidas añadir la marca “L“.

Incluso podría provocarse un desastre si cometes el error de meter tus reglas personalizadas dentro de los marcadores BEGIN/END, pues ya sabes que WordPress sustituirá todo lo que haya ahí por sus reglas por defecto, y eso puede romper de todo tu web, así que no lo hagas, es la peor situación.

Nunca pongas reglas personalizadas de permalinks dentro del bloque de #WordPress del archivo .htaccess Clic para tuitear

Así que, a las malas, es siempre mejor que WordPress meta sus reglas aunque sean redundantes, mientras tu pongas tus reglas personalizadas fuera de ese bloque ¿entendido?

De todos modos, nunca es buena idea que te metas a modificar el archivo .htaccess sin un conocimiento preciso de cómo funciona ¿razones?:

  1. La sintaxis de Apache/.htaccess es tremendamente sensible a los errores
  2. Un simple error de sintaxis/idioma puede tirar el servidor
  3. No es seguro asumir directivas de .htaccess previas
  4. Las directivas de .htaccess existentes pueden entrar en conflicto con las nuevas reglas que se añadan
  5. Cualquier cosa que se añada al archivo .htaccess debería probarse en profundidad antes de que esté activa, especialmente si afectan a otras reglas

De hecho, el mejor modo de romper tu instalación de WordPress es enredar con el archivo .htaccess sin saber exactamente qué estás haciendo.

El mejor modo de romper #WordPress es enredar en el archivo .htaccess sin saber exactamente qué haces Clic para tuitear

Y te digo todo esto porque, antes de meternos a ver maneras de impedir que WordPress cambie el archivo .htaccess, es importante que comprendas que cualquier paso mal dado podría hacer que algo, o todo, deje de funcionar.

Cómo evitar que WordPress modifique el archivo .htaccess

trucos htaccess

Bueno, pues manos a la obra. Vamos a ver cómo impedir que WordPress haga de las suyas con nuestro archivo .htaccess.

Método 1: Bloquear el archivo .htaccess

La manera más limpia es hacer que el archivo .htaccess sea de “solo lectura. Al cambiar los permisos de archivo a solo lectura WordPress no podrá modificarlo.

Los permisos de archivo por defecto en WordPress son 644, y en mi caso suelo sustituirlos por 444 en el archivo .htaccess, pero también puedes cambiarlos a 440 o 400. La idea es que lo limites al mínimo necesario, que en mi experiencia suele ser 444. De todos modos, si tienes dudas pregunta a tu proveedor de hosting.

Lo que te quiero decir es que este sencillo cambio es una solución robusta y fiable, pero también debes ser consciente de que de este modo evitarás que WordPress, pero también plugins y temas, hagan cambios al archivo .htaccess.

Así que, si haces este cambio y mañana tu plugin de cache, por ejemplo, quiere añadir reglas a tu archivo .htaccess, serás tú quien tendrá que añadirlas manualmente.

Ni siquiera tú mismo podrás hacer cambios al archivo por FTP, SSH o el editor de tu plugin SEO favorito, antes tendrás que cambiar los permisos a 644, hacer los cambios, guardarlos, y volver a cambiar los permisos a 444.

Recordatorio

Si estás todo el día haciendo cambios en el archivo .htaccess, por ejemplo para añadir nuevas reglas de bloqueo de spam o cosas así, puede que prefieras usar el siguiente método.

Método 2: Añade un filtro

Si quieres evitar que WordPress siga actualizando automáticamente tus reglas de enlaces permanentes, pero también quieres que el archivo siga teniendo permisos de escritura para otras tareas, entonces puedes añadir el siguiente filtro en tu plugin de utilidades o en el archivo functions.php del tema activo:

Este filtro evitará que WordPress modifique las reglas de enlaces permanentes de tu archivo .htaccess (o web.config si usas un servidor Windows).

La única posible pega de este método es que deberás estar atento si en algún momento WordPress hace algún cambio en sus reglas de enlaces permanentes por defecto, para actualizar tu archivo .htaccess a lo que salga. Pero vamos, que yo sepa esto solo ha pasado una vez, hace 6 años.

Método 3: Haz tus personalizaciones fuera de los marcadores de WordPress

Como ya te he comentado, si no te importa que WordPress, o incluso los plugins escriban en tu archivo .htaccess, simplemente puedes añadir tus reglas personalizadas al archivo .htaccess fuera de los marcadores BEGIN/END de WordPress.

De este modo WordPress seguirá actualizando sus reglas de enlaces permanentes, y cualquier plugin podrá también añadir lo que sea a tu archivo .htaccess (los de cache, seguridad y SEO lo hacen con bastante asiduidad), mientras tus reglas personalizadas no serán sustituidas/borradas por WordPress.

Método 4: No hagas nada

Por supuesto, siempre puedes dejar que WordPress actualice tu archivo .htaccess como quiera. Solo un par de apuntes acerca de este “método”:

  • Sólo te lo recomiendo si no necesitas reglas de enlaces permanentes personalizadas.
  • Aunque no es malo de suyo que WordPress haga cambios en tu servidor, quizás deberías plantearte si también vas a permitir que los plugins tengan esos mismos privilegios.

Así que si estás pensando “qué chorrada, decirme que no permita que WordPress haga lo que considere necesario“, tranqui. Lo que te estoy informando es de que en ciertas situaciones permitir que WordPress escriba automáticamente en tu archivo .htaccess puede ser peligroso.

Pero, ahora bien, si siempre usas las reglas de ajustes permanentes por defecto que ofrece WordPress, entonces no pasa nada porque haga los cambios automáticamente. No seré yo quien niegue que WordPress es seguro y fiable, que lo es.

Valora este artículo para mejorar la calidad del blog ...

Al hacer una valoración se recoge una cookie con la IP de tu dispositivo

FlojitoNo está malEstá bienMe ha servidoFantástico (85 votos, promedio: 5,31 de 5)
Cargando…

Autor: Fernando Tellado

Fernando Tellado, apasionado de WordPress, profesor, consultor y ponente. Maquero cansino, padre de tres hijos y de una perrita Beagle, Bilbaíno de nacimiento, Español de corazón y ciudadano de donde me quieran. Autor del libro WordPress - La tela de la araña. Mi blog personal es Navegando con red, donde he crecido como escritor en la red y ofrezco mis visiones acerca de la Web 2.0 y la blogosfera.

Comparte esta entrada en
468 ad

Pin It on Pinterest