Soporte Técnico

Descuento en todos los planes de hosting del 50%

Oferta para Nuevos Clientes, 50% DE DESCUENTO en todos los planes de hosting, aplicando el cupón : PI20ANIVER

Entendiendo el .htaccess predeterminado de WordPress

Al mantener un sitio de WordPress, puede que intente cosas que normalmente funcionarían y descubra que obtienen resultados inesperados. Esto generalmente se debe a cómo las reglas .htaccess predeterminadas de WordPress manipulan las configuraciones y proporcionan "enlaces permanentes bonitos" (pretty permalinks).

Este artículo es directamente aplicable a WordPress en un servidor basado en Apache. Para WordPress Multi-sitio u otros servidores web (Nginx, IIS, etc.) revise la documentación oficial de WordPress (https://codex.wordpress.org/Using_Permalinks) ya que las reglas y configuraciones pueden ser diferentes.


Las reglas predeterminadas

Las reglas predeterminadas de WordPress .htaccess son las responsables de cómo WordPress puede admitir/soportar 'enlaces permanentes bonitos'. Sin estas reglas, los enlaces permanentes de WordPress no se resolverían correctamente. Esta característica permite que sus URL’s se vean mucho más claras y legibles sin complicar demasiado ni saturar la estructura de archivos de su sitio web.

Las reglas predeterminadas se ven de la siguiente manera:


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress


Para desglosar lo que estas reglas están definiendo, comenzaremos en la parte superior y avanzaremos hacia abajo.

  • Primero, ve un comentario, como lo indica el hashtag; este símbolo # se usa para denotar un comentario en archivos .htaccess.
  • A continuación, verá una llave de apertura para la función interna "IfModule" de Apache; esto especifica que las reglas contenidas solo deben usarse con el módulo "mod_rewrite" para Apache.
  • El módulo Rewrite está habilitado.
  • RewriteBase está activado; esto define la carpeta 'raíz' (root) que se debe aplicar a las reglas de reescritura.
  • La siguiente línea es la primera regla de reescritura, esta regla define que si (if) se llama específicamente un archivo "index.php", entonces no es necesario reescribir.
  • Las siguientes dos líneas definen condiciones de reescritura; estas condiciones especifican que si no se puede encontrar ningún archivo o carpeta en la URL dada, se debe aplicar la siguiente regla.
  • Finalmente, la última regla de reescritura antes del corchete es para "IfModule". Esta regla solo se aplicará si no se encuentra ningún archivo o carpeta para la URL. Si eso ocurre, la solicitud se pasará a WordPress antes de proporcionarle una respuesta al cliente.
    Si bien este desglose puede ser una explicación suficiente para algunos, esta sigue siendo una cadena de reglas muy compleja. Las reglas se describen y resumen mejor de la siguiente manera: "Si Apache no puede encontrar el archivo o la carpeta solicitada, la solicitud debe ser tratada directamente por WordPress".

Un resultado interesante de esto es que, técnicamente, todas las páginas de WordPress darían un resultado 404 en el contexto de Apache y solo hasta que PHP y WordPress reciben la solicitud, puede cualquier contenido resolverse favorablemente para brindar una respuesta.


Consejos para reglas personalizadas

Por lo general, no hay una causa única para los problemas experimentados al tratar con las reglas .htaccess en un sitio con WordPress instalado. Como la causa puede variar de un sitio a otro, e incluso de regla en regla, es difícil proporcionar una explicación extensa de los problemas. También es importante tener en cuenta que los complementos (plugins) y los temas (plantillas) también pueden afectar la forma en que se administran ciertas reglas.

Una regla común que causa un comportamiento extraño y proporciona resultados mixtos generalmente se relaciona con permitir el acceso basado en una dirección IP específica. Estas reglas generalmente se ven así:

<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.11.109.98 localhost
</Files>


La regla anterior denegará a todas las IP el acceso a wp-login.php a menos que la IP aparezca en la línea 'Permitir desde' (Allow from). Si bien debería funcionar por defecto, ocasionalmente esto puede causar problemas. Si lo hace, la solución habitual es definir los documentos de error. Esto se vería así:

ErrorDocument 401 default   
ErrorDocument 403 default
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.101.159.98 localhost
</Files>


Como son varios los problemas que pueden surgir y cada uno tiene su propia solución, simplemente no podemos cubrirlos todos aquí. Si cree que está experimentando problemas de configuración relacionados con las reglas mencionadas aquí, no dude en ponerse en contacto con nosotros.


Innovación desde 1998