El fichero .htaccess (fichero de acceso a hipertexto) es un archivo de configuración del nivel de directorio que permite la gestión descentralizada de la configuración del servidor web. Un archivo .htaccess es siempre agregado en el directorio raíz y con él se pueden modificar muchos parámetros de configuración de WordPress, como pueden ser:

  • La configuración del servidor (server’s global configuration)
  • El tipo de contenido (content type)
  • El conjunto de caracteres (character set)

Con todas estas propiedades el archivo .htaccess se convierte en clave que garantizar y mejorar la funcionalidad de las páginas web y blogs que tengan una instalación WordPress.

SEO y .htaccess

El archivo .htaccess es vital para hacer un buen trabajo de posicionamiento en motores de búsqueda. Como consultor SEO, a la hora de posicionar una página o blog en los motores de búsqueda como Google, lo uso para:

  • Crear redirecciones: Por ejemplo para un trabajo de cambio de dominio, donde habría que mantener las visitas del anterior dominio
  • Mejora de la velocidad de carga habilitando la compresión con .htaccess: Es un apartado que muy pocas páginas web usan y que da muy buenos resultados
  • Reescritura de enlaces (URL)
  • Soluciones al contenido duplicado: Por ejemplo capando los accesos a ciertos contenidos para que ya no estén duplicados
  • Moderar comentarios
  • Un largo etc

Cuando instalas WordPress se crea un fichero .htaccess que WordPress usa por defecto, pero ese fichero puede ser mejorado, utilizando consejos como los que te ofrezco a continuación. Ten cuidado al implementarlos, y siempre guarda una copia de seguridad antes de cambiar nada, por si tienes que volver hacia atrás :).

Trucos para vconfigurar el archivo .htaccess

A continuación vamos con unos cuantos trucos traducidos de “20 htaccess hacks to prevent your WordPress site from hacking” para saber cómo configurar y optimizar .htaccess para evitar “Hackeos” que dificultarán y evitarán en gran medida la piratería en tu página web o blog en WordPress. Algunos de estos consejos son para:

  • Bloquear direcciones IP específicas
  • Redirigir las visitas a la página de mantenimiento cuando se está rediseñando una página web o blog en particular
  • Restringir direcciones IP para que nadie pueda acceder al panel de administración de tu WordPress
  • Muchos otros trucos o consejos para configurar y optimizar el archivo .htaccess en WordPress.

Antes de seguir, tengo que dejar claro que en este artículo muestro los consejos más importantes para configurar .htaccess para evitar “Hackeos”, pero si lo que quieres es profundizar en el tema y configurar correctamente tu fichero .htaccess no puedes dejar de leer la guía de referencia de .htaccess (en inglés).

#1 Bloquear IPs de usuarios o bots indeseados

Apache puede ser utilizado para bloquear usuarios o bots indeseados a nuestra página web o blog. Este código permite visitar la página web o blog a cualquier persona, excepto a quien tenga las siguientes direcciones IP (cambiar las IPs con las IPs que quieras bloquear):

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.456.789
deny from 93.121.788
deny from 223.956.789
deny from 128.456.780
</LIMIT>

#2 Redireccionar el día y el nombre de los enlaces permanentes a /% postname%/

Seguridad en WordPress Como configurar htaccess para evitar Hackeos redirecciones 301

Lo primero que debes de hacer es acceder a tu panel de administración de WordPress, ir a Ajustes → Enlaces permanentes (permalinks) y seleccionar “personalizar”. Rellena el campo con /% postname%/:

Ahora tenemos que redirigir todos los backlinks (enlaces entrantes) usando la antigua estructura de enlaces permanentes (permalinks) a la nueva estructura de enlaces permanentes. Para ello, tendrás que editar el archivo .htaccess. e insertar las siguiente líneas de código:

RedirectMatch 301 /(
[0-9]+)/([0-9]+)/([0-9]+)/(.*)$ http://http://www.tu_dominio.com//$4

Si quieres configurar unos enlaces permanentes más óptimos, te aconsejo cambiar /% postname%/ por /% category%/% postname%/.

#3 Redireccionar las visitas a una página de mantenimiento

RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123.123.123.123
RewriteRule $ /maintenance.html [R=302,L]

#4 Redireccionar hacia www o sin www con .htaccess

Seguridad en WordPress Como configurar htaccess para evitar Hackeos redirecciones 301

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^yourblogname.com [NC]
RewriteRule ^(.*)$ http://www.yourblogname.com/$1 [L,R=301]
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.tu_dominio.com [NC]
RewriteRule ^(.*)$ http://tu_dominio.com/$1 [L,R=301]

#5 Configurar URLs canonical con .htaccess

# Set the canonical url
RewriteEngine On
RewriteCond %{HTTP_HOST} ^tu_dominio.com$ [NC]
RewriteRule ^(.*)$ http://www.tu_dominio.com/$1 [R=301,L]

#6 Redireccionar tu feed hacia FeedBurner

Este truco redirecciona http://www.tupaginaweboblog.com/feed a .

# temp redirect wordpress content feeds to feedburner
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
 RewriteRule ^feed/?([_0-9a-z-]+)?/?$  [R=302,NC,L]
</IfModule>

#7 Redireccionar tu feed de comentarios hacia FeedBurner

# temp redirect wordpress comment feeds to feedburner
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
 RewriteRule ^comments/feed/?([_0-9a-z-]+)?/?$  [R=302,NC,L]
</IfModule>

#8 Redirecciones 301 para SEO con .htaccess

Utiliza el siguiente código para redirigir a una página específica sin mostrar la antigua página de error.

Seguridad en WordPress Como configurar htaccess para evitar Hackeos redirecciones 301

<a class="_hootified" a="" href="#" #seo"="" onclick="javascript:var e = document.createEvent("CustomEvent"); e.initCustomEvent("hootletEvent", true, true, {type: "hash", value: "#SEO"});  document.body.dispatchEvent(e); return false;">#SEO</a> Friendly 301 Redirects
Redirect 301 /abc/file.html http://www.tu_dominio.com/def/file.html

#9 Forzar la cache desde .htaccess

Este código para el .htaccess no ayudará en la carga inicial de la página web o blog, pero si lo hará significativamente en posteriores cargas enviando estados 304 cuando los elementos solicitados no se hayan modificado.

FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus x seconds"

#10 Permitir únicamente tu IP para acceder al panel de administración de WordPress

Reemplaza la IP de la línea de código “with allow from xx.xx.xx.xx” con la tuya para que sólo tu IP pueda acceder al panel de administración wp-admin de wordpress.

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Wordpress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</LIMIT>

#11 Bloquear comentarios a peticiones no referenciadas (Spam)

Simple truco para evitar que los spammers publiquen o ataquen tu página web o blog.

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !.*tu_dominio.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

#12 Bloquear una IP spam

Para bloquear ciertas direcciones IP para evitar que accedan a tu página web o blog, añade las siguientes líneas de código en tu archivo .htaccess y sustituye la dirección IP del ejemplo con la que quieras bloquear.

## USER IP BANNING
<Limit GET POST>
order allow,deny
deny from 200.49.176.139
allow from all
</Limit>

#13 Denegar acceso al fichero de configuración wp-config de WordPress

El archivo wp-config.php de WordPress incluye toda la información importante, como el nombre de base de datos. Es vital tenerlo bien protegido.

# protect wpconfig.php
<files wp-config.php>
order allow,deny
deny from all
</files>

#14 Limitar el peso de los archivos subidos a 20mb

Para limitar el tamaño de los archivo que subes en wordpress hasta 20MB, utiliza el siguiente código:

# limit file uploads to 10mb
LimitRequestBody 10240000

#15 Personalizar la página de error 404 con .htaccess

# custom error pages
ErrorDocument 401 /err/401.php
ErrorDocument 403 /err/403.php
ErrorDocument 404 /err/404.php
ErrorDocument 500 /err/500.php

#16 Añadir barra (/) al final de las URLs

Para añadir una barra al final de tus enlaces (URLs), inserta el siguiente código en tu archivo .htaccess:

<a class="_hootified" a="" href="#" #trailing"="" onclick="javascript:var e = document.createEvent("CustomEvent"); e.initCustomEvent("hootletEvent", true, true, {type: "hash", value: "#trailing"});  document.body.dispatchEvent(e); return false;">#trailing</a> slash enforcement
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://tu_dominio.com/$1/ [L,R=301]

#17 Proteger directorios con contraseñas

Seguridad en WordPress Como configurar htaccess para evitar Hackeos acceso denegado

Una forma sencilla de proteger mediante contraseña los directorios de tus blogs.

AuthType Basic
AuthName "restricted area"
AuthUserFile /usr/local/var/www/html/.htpasses
require valid-user

#18 Resolver errores en los enlaces (URLs) con .htaccess

Este truco puede ser útil para auto-corregir errores ortográficos de tus enlaces (URLs).

<IfModule mod_speling.c>
CheckSpelling On
</IfModule>

#19 Asegurar los plugins de WordPress

Los plugins de wordpress suelen tener “puertas traseras” y suelen ser sitios por los que los hackers pueden entrar en tu página web o blog. Para evitar que otras personas tengan acceso directo a los archivos de tus plugins usa el siguiente código:

<Files ~ ".(js|css)$">
  order allow,deny
  allow from all
</Files>

¿Te sabes algún truco más? ¡Añádelo en los comentarios!