Configuración perfecta de htaccess para WordPress

12 Trucos útiles para tener un .htaccess perfecto en WordPress

1.7/5 - (6 votos)

Una pregunta recurrente que recibimos de clientes y suscriptores es cómo configurar correctamente un WordPress en su servidor.

Si estás leyendo este artículo es porque probablemente te preocupe la seguridad en WordPress o que tu web funcione correctamente a nivel servidor.

Existen muchas configuraciones posibles para el .htaccess en WordPress pero si sigues leyendo podrás descargar una versión definitiva.

Disculpa que este artículo sea un poco técnico pero intentaremos explicarlo sin ser demasiado arduo…

¿Qué es el fichero htaccess?

Es un fichero de configuración del servidor web Apache

Puede que te hayas quedado igual. Espera que me explico mejor, que este artículo no está encaminado a personas técnicas.

Tu servidor web es el encargado de responder a las peticiones que recibe desde todos los puntos del planeta y enviar la respuesta a tu navegador. Quédate con esa definición de andar por casa.

Con el archivo .htaccess podemos configurar localmente y para tu web algunas directivas (o formas de funcionar) que tiene el servidor web.

Se trata de un archivo oculto, por eso lleva el ‘.’ delante que se indica así en sistemas operativos basados en UNIX / Linux.

Por supuesto, este archivo debe de estar protegido y con permisos 644, que significa que da permiso de lectura a todos los usuarios del sistema operativo y solo permite modificar el archivo al administrador o root.

Ahora que sabes lo que es el archivo .htaccess comprenderás que es un archivo muy importante y que debes de tener cuidado a la hora de insertarlo o modificarlo puesto que puede hacer que tu web se “rompa”.

Para editarlo, simplemente accede con tu programa de FTP y lo encontrarás en la carpeta raíz.

Crear el archivo .htaccess para WordPress

Por defecto, WordPress trae un fichero .htaccess que permite que WordPress funcione con normalidad.

Pero si quieres proteger más a tu WordPress y mejorar el rendimiento en algún punto, deberás personalizarlo.

Cada servidor y que cada web es un mundo así que tu .htaccess deberá ser creado en función a tus necesidades. Sin embargo, te dejo una referencia que nosotros usamos:

Descargar aquí –> https://gist.github.com/loorlab/58e0715f8bf09beab08b

Te aconsejo que cojas como punto de partida ese fichero y luego vayas eliminando lo que no te sirva.

Aviso para novatos: Si eres novato, no te aconsejamos modificar el archivo .htaccess. Puedes dejar caída toda la web.

Dicho esto, vamos con algunos trucos que pueden servirte…

Modo Mantenimiento WordPress
¿Estás dispuesto a perder todo tu esfuerzo en la web de la noche a la mañana? Protege tu negocio online con nuestro servicio de:

Mantenimiento y soporte WordPress

Proteger tu WordPress y bloquear los bots

Evitar bots maliciosos que consumen recursos en tu servidor debe ser algo que te tomes bien en serio. Si te fijas en el fichero htaccess que te hemos dejado antes, estas serían las líneas para bloquear algunos bots:

RewriteCond %{HTTP_USER_AGENT} "^Mozilla.*Indy" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "^Mozilla.*NEWT" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "^$" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "^Maxthon$" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "^SeaMonkey$" [NC,OR]

Y estas para bloquear los abusos de HTTP (el famoso semalt que te aparecerá seguramente en Google Analytics):

RewriteCond %{HTTP_REFERER} "^https?://(?:[^/]+\.)?semalt\.com" [NC,OR]
RewriteCond %{HTTP_REFERER} "^https?://(?:[^/]+\.)?kambasoft\.com" [NC,OR]
RewriteCond %{HTTP_REFERER} "^https?://(?:[^/]+\.)?savetubevideo\.com" [NC]

En este caso, te diré que lo mejor es copies y pegues todas las líneas de código del fichero base que te hemos dejado. Todo lo que encuentras entre las etiquetas «# Start HackRepair.com Blacklist” y «# End HackRepair.com Blacklist, http://pastebin.com/u/hackrepair»

Proteger el fichero wp-config.php

Es el fichero más importante de tu instalación WordPress. Es donde se guardan todos los datos de configuración de tu WordPress. Si cayera en malas manos podrían hacer cualquier cosa con tu WordPress.

El fichero wp-config.php se encuentra en el directorio raíz y conviene protegerlo.

Con este código en .htaccess lo podrás hacer sin problemas:

<files wp-config.php>
Order allow,deny
Deny from all
</files>

Como puedes ver en el fichero base que te poníamos, también puedes proteger otros ficheros como los readme.txt, el install.php o el propio .htaccess

Proteger el area de Administración por IP

Puede que hayas instalado WordPress en un servidor y quieras que sólo desde ciertas localizaciones se pueda acceder al área de administración.

En este caso el código que debes usar es el siguiente:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
# aquí la IP que quieras permitir
allow from xx.xx.xx.xxx
# aquí otra IP que quieras permitir
allow from xx.xx.xx.xxx
</LIMIT>

Tendrás que sustituir las ‘xx’ por la IP que quieras habilitar. Puedes añadir tantas IPs como necesitas. Simplemente añade una línea adicional como en el ejemplo.

Proteger la carpeta Admin con contraseña

El apartado anterior está bien si siempre entras desde una IP fija. No obstante, no suele ser el caso. Si necesitas acceder desde varias localizaciones, o desde diferentes puntos en los que no tienes una IP fija puedes limitar el acceso al Directorio Admin a través de una contraseña.

Esto hará que antes del propio login de Admin de WordPress, tu navegador te pregunte por otro user/password. No te confundas, puesto que son diferentes. Estamos añadiendo una capa más de seguridad.

Necesitarás un fichero .htpasswds que contenga una línea de código similar a esta:

prueba:$apr1$OLS6vV/M$aM3/WwwInwXsNbz77cmql.

Como ves, el usuario es ‘prueba’ y la contraseña está encriptada. No te preocupes, puedes usar el siguiente generador para realizar el proceso.

Copia y pega esa línea en un fichero nuevo y guarda el fichero con el nombre .htpasswds. Sube ahora este fichero por FTP a tu servidor y déjalo en el directorio: ‘home/user/.htpasswds/public_html/wp-admin/passwd/’

Y este es el código que tendrás que añadir en el .htaccess para relacionar ese fichero:

AuthName "Admins Only"
AuthUserFile /home/yourdirectory/.htpasswds/public_html/wp-admin/passwd
AuthGroupFile /dev/null
AuthType basic
require user ponelnombredeusuario
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>

Proteger el .htaccess de accesos no autorizados

Como hemos visto, podemos proteger cualquier fichero para ser accedido. Igual que lo hemos hecho para wp-config.php podríamos utilizar este código para el .htaccess:

<files .htaccess>
Order allow,deny
Deny from all
</files>

Deshabilitar el browsing de directorios

Este truco es bastante importante de cara a la seguridad. Impide que los usuarios puedan ver la estructura de ficheros de una determinada carpeta.

Te pongo un ejemplo:

Esto no es correcto y da pistas a un supuesto atacante del contenido de tu web. Para protegerte, algo tan fácil como:

Options -Indexes

Deshabilitar la ejecución de PHP en algunos Directorios

Ejecutar PHP dentro de los directorios /wp-includes/ o /wp-content/ no debería ocurrir, pero muchas veces nos encontramos este problema.

Se produce porque la web ha sido hackeada y los atacantes han instalado un backdoor en ella. De tal manera que son capaces de ejecutar código malicioso desde un directorio donde se supone que no deberían.

Te aconsejo crear un fichero .htaccess en blanco y colocarlo en los directorios /wp-includes/, /wp-content/ y en cualquiera otro que te haga falta proteger.

Mete en ese fichero .htaccess el siguiente código:

<Files *.php>
deny from all
</Files>

Si lo quisieras hacer directamente desde el .htaccess del directorio ráiz también podrías hacerlo con este código con el que protegerías el directorio /uploads/

RewriteRule ^(.*)/uploads/(.*).php(.?) - [F]

Deshabilitar el Hotlinking de Imágenes

Hay veces que webs externas referencia a una imagen de tu web. Esto puede hacer que tu web vaya lenta puesto que están consumiendo recursos de tu servidor para cargar imágenes en esa otra web.

Para protegerte del hotlinking añade esto a tu .htaccess:

#disable hotlinking of images with forbidden or custom image option
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?tudominio.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]

Tienes que sustituir ‘tudominio.com’ por el nombre de tu dominio. De esta manera sólo permitirá cargar imágenes que se muestren en tu dominio o desde Google.

Uso de gzip para compresión

Seguramente si usas un plugin de Caché, este ya realice alguna compresión gzip. Revisa bien el código que genera tu plugin por si entrar en conflicto con el que aquí te dejamos (está en el fichero base).

Con la compresión lograr una mejora de velocidad de carga puesto que tu navegador tendrá que cargar menos información. Este es el código a usar:

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

Te vendrá también muy bien para mejorara tus resultados en Page Speed Insights de Google

Crear redirecciones 301

Aunque hay plugins en WordPress para generar redirecciones 301, puede hacerse también a través del .htaccess. En realidad lo que realmente hacen esos plugins es modificar el .htaccess. Así que, ¿por qué no hacerlo manualmente?

El código por cada redirección que necesites es:

Redirect 301 /urlantigua/ http://www.tudominio.com/urlnueva

Si no sabes lo que es una redirección 301 o cómo hacerla en WordPress, te aconsejo que le eches un vistazo a este vídeo:

Aumentar el tamaño de subida de ficheros

Es posible que cuando intentas subir una imagen, una plantilla o un plugin a tu WordPress, te aparezca una mensaje de error diciendo que es demasiado grande. Es posible que tu servidor esté limitando el tamaño de los ficheros demasiado.

Existen varios métodos para corregir este error, pero uno de ellos consiste en introducir este código en tu fichero htaccess:

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

Pruébalo, aunque puede que tu proveedor de hosting no permita estas directivas.

Deshabilitar XML-RPC

Por si no lo sabías, toda instalación WordPress tiene un fichero llamado xmlrpc.php. Gracias a este fichero, otras aplicaciones de terceros pueden conectarse a tu WordPress y extraer información de él. Sin embargo, si no estás utilizando ninguna aplicación de terceros, es mejor que deshabilites esta opción.

Con estas simples líneas en tu .htaccess podrás deshabilitarlo y salvaguardar la seguridad de tu WordPress de posibles ataques externos:

<Files xmlrpc.php>
Order deny,allow
Deny from all
</Files>

Espero que hayas podido digerir bien el artículo, un poco más técnico de lo normal. Si te ha gustado, o vas a usar algo de lo que proponemos, por favor, no te olvides compartirlo en tus redes sociales. O deja un comentario si tienes dudas con alguno de los trucos.

Deja un comentario

  1. Responder

    Gracias por la información, he conseguido mejorar bastante los errores en GTmetrix

    Un saludo

  2. Responder

    Hola
    La verdad es que no sabía que se podía realizar tantas funciones de seguridad en wordpress con este archivo.
    Gracias por la información

    • Joel
    • 22 febrero, 2018
    Responder

    Muchas gracias! la verdad me sirve muy bien, y como han dicho hay cosas que no sabía que existian…

    • Julian
    • 21 febrero, 2018
    Responder

    Hola Iñaky, excelente articulo, podrías ayudarme un poco con algo que he querido hacer pero no lo consigo?.
    Consiste en hacer que los enlaces de un acortador que uso para ocultar links directos a archivos: .mp3 , funcionen solamente en el dominio elegido, osea que si alguien se llevase un enlace acortado de esos a otro dominio, pues que no le funcione. El acortador lo he comprado, osea que tengo acceso a todos sus ficheros, incluido el .htaccess, un saludo

  3. Responder

    Muy buen articulo informativo sobre wordpress, me he dedicado a esto de la programacion con wordpress durante un buen tiempo y ultimamente me a costado encontrar informacion de calidad, aprecio mucho el aporte y al igual que algunos espero poder compartir con compañeros y estudiantes el articulo. De nuevo, muchas gracias.

  4. Responder

    Hola

    Gracias por esta aportación estoy empezando en todo este tema de los CMS para crear mi web y hay muchas cosas que desconocía

  5. Responder

    Me parece un post muy completo y que le podría servir a mi público: ¿te importa si hago tomando alguno de los ejemplos y te cito como fuente?

    • Responder

      Gracias por tu comentario Toni, no hay problema siempre que no hagas un copia y pega del artículo 🙂