Trucos para el htaccess

Reading time aprox: 4 minutes

Hace poco se publicó en nuestra web madre, Las reglas htaccess que debes conocer, lo que me ha inspirado para presentar unos trucos para el htaccess en WordPress.

Aunque la instalación del CMS por excelencia se cuida de los aspectos básicos del archivo .htaccess, podemos modificar este archivo para añadir algunos toques.

Cualquier cambio que se haga, es válido también para la mayoría de entornos web, pero nos centraremos en WordPress.

Trucos para el htaccess en WordPress

Ya comenté como se puede editar el archivo desde el interior de WordPress en la entrada de Cómo editar de forma segura el htaccess, así que me centraré en este archivo, independientemente del método de edición.

Veremos los siguientes trucos:

1 – Bloquea robots malintencionados.

Uno de los usos más interesantes del htaccess, es que podemos bloquear el acceso a las IP de «los malos». Si ya tenemos una lista de conocidos, la podemos integrar y, podemos ir añadiendo más según los conozcamos.

El código es:

# Bloque una o más direcciones IP.
# Reemplaza DIRECCIÓN_IP_* con la IP que quieres bloquear.


order allow,deny
deny from DIRECCIÓN_IP_1
deny from DIRECCIÓN_IP_2
allow from all

2 – Deshabilitar la navegación por directorio

Si no se toma esta precaución elemental, puede suceder que un usuario acceda por ejemplo a: www.misitio.es/wp-content/ y lo que verá será una lista de todos los archivos y directorios que hay bajo ese camino, pudiendo descargar cualquier cosa que encuentre ahí.

Para prevenir esa navegación introducimos el código:

# Deshabilita la navegación por directorios
Options All -Indexes

3 – Restringe los archivos en wp-content

Como sabes, bajo el subdirectorio wp-content están todos tus temas, plugins, copias de seguridad*, galería de medios, …

Además de no permitir que naveguen por el directorio, es conveniente restringir el acceso sólo a quienes necesitan acceder.

El truco consiste en deshabilitar el acceso y habitar sólo aquéllos que conocemos que serán necesarios. Para esto insertamos:

# Deshabilita el acceso a todos los archivos excepto a los siguientes
Order deny,allow
Deny from all

Allow from all

Es importante notar que esta opción funciona solo en el directorio en el que está el .htaccess, así que crea un archivo sólo para el wp-content, si lo pones en otro sitio, no funcionará.

4 – Restringe todo acceso al directorio wp-includes

El subdirectorio wp-includes contiene programas del corazón de WordPerfect que nadie (ni siquiera tu) debería acceder.

# Impedir el acceso a todos los directorios y archivos de wp-includes

RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]

5 – Permite solo algunas IP acceder a wp-admin

El directorio wp-admin alberga todos los guiones de la parte de administración de WordPress, por tanto, sólo deben acceder a él, los administradores legítimos.

Esto lo hacemos bloqueando el acceso y permitiéndolo sólo a quien queremos.

# Limita las entradas a administración por IP

order deny,allow
deny from all
allow from 302.143.54.102
allow from IP_ADDRESS_2

Igual que en el punto 3, este .htaccess debe localizarse en el directorio dónde debe tener efecto, no en el directorio principal.

Hay dos inconvenientes a tener en cuenta con este método de protección:

  1. Si tienes usuarios que deben registrarse para comentar o para comprar, será casi imposible mantener cuenta de ellos.
  2. Si quien necesita acceder está con una IP variable, tendrás que cambiar el acceso constantemente. Las razones para tener una IP variable pueden ser por ejemplo que su «ISP» le asigne una IP dinámica cada vez o, porque está accediendo desde un móvil (celular) ya que la IP dependerá de la antena 3G o 4G con la que se conecte o, quien quiere acceder está en un sitio de WiFi público.

Por suerte todas esas desventajas tienen solución técnica, por ejemplo con la instalación de un «VPN» en el servidor (la explicación de este tema escapa a lo relativo a esta bitácora).

6 – Protege el acceso a wp-config.php y .htaccess de todos

Como sabes, el archivo wp-config.php contiene la configuración de tu copia de WordPress, incluyendo las claves de usuario y acceso a la base de datos. Estos datos no interesan que se hagan públicos y no hay necesidad de que nadie los cambie, así que no debe tener acceso.

Y por supuesto, nadie debería tener acceso al archivo .htaccess, pues es la clave de tu seguridad.

Protegemos estos archivos con el código:

# Denegar el acceso al archivo wp-config.php

order allow,deny
deny from all

Y para denegar el acceso a todos los archivos «.htaccess» de cualquier directorio, añadimos el código:

# Denegar el acceso al archivo .htaccess

order allow,deny
deny from all
satisfy all

7 – Evita el «hotlinking» de imágenes

El hotlinking es la técnica de enlazar desde un sitio externo, a una imagen de tu galería, al hacer esto, no solo roban la imagen sino que están robando recursos de tu servidor y ancho de banda de tus conexiones.

Puedes protegerte de esa mala práctica, con el código:

# Evita el hotlinking.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?tusitio.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?tuotrositio.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]

En este caso también estarás tu practicando el «hotlinking», reemplaza la imagen de la última línea por una tuya propia en tu propio servidor. 🙂

8 – Modo mantenimiento

Ya te conté en otra entrada, cómo poner el WordPress en modo mantenimiento, pero si quieres, aquí tienes otra forma de conseguirlo, incluso si no usas WordPress. 🙂

Para que tus visitantes vean una página especial en caso de que tengas tu web en mantenimiento, puedes usar este código:

# Redirecciona el tráfico hacia el archivo maintenance.html
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L] 

Si ha terminado el periodo de mantenimiento, puedes borrar este trozo de código o puedes comentar las líneas para tenerlo a mano la próxima vez. Recuerda, se comenta poniendo el símbolo «#» al principio de la línea.

9 – Página de error personalizada

Uno de los errores más habituales y conocidos, es el error 404, la temida «página no encontrada».

WordPress y su comunidad proveen la manera de lidiar con este error, con una gran variedad de plugins que facilitan su manejo, pero también puedes controlarlo tú mismo, aunque no tengas WordPress. El código es sencillo:

# Páginas de error personalizadas para errores 403, 404 y 500
ErrorDocument 404 /error404.html
ErrorDocument 403 /error403.html
ErrorDocument 500 /error500.html

Conclusión

Recuerda que tratar con el archivo «.htaccess» es una tarea delicada, te recomiendo hacer la prueba de un módulo cada vez y hacer copia de seguridad del archivo siempre antes de cambiar cualquier cosa.

Este archivo es muy sensible y un «#» desplazado o un error ortográfico, pueden hacer que tu sitio deje de funcionar completamente.


¡Gracias por leernos!


¡Tus comentarios y preguntas nos ayudan a mejorar, por favor comenta!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

13 − 7 =

Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.    Más información
Privacidad