Seguridad en WordPress: 20 tips para .htaccess

Trucos .htaccessEl 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 suele agregarse en el directorio raíz y con él se pueden modificar muchos parámetros de configuración de WordPress.

.htaccess se puede usar para un montón de tips (optimizaciones) que garanticen y mejoren la funcionalidad de los blogs y sitios web de WordPress.

htaccess y SEO

El uso que hacemos los consultores SEO freelance del fichero .htaccess para el posicionamiento en buscadores, es bastante amplio y contempla aspectos como: redirecciones, rewrite de url, mejora de la velocidad de carga habilitando la compresión con .htaccess, soluciones al contenido duplicado, migraciones, etc.

htaccess y WordPress

Cuando instalamos WordPress se crea un fichero .htaccess que WordPress usa por defecto, pero ese fichero puede ser mejorado, utilizando consejos como los que os ofrecemos a continuación.

Trucos o hacks para .htaccess

A continuación presentamos los 20 tips traducidos de Top 20 hacks para htaccess que dificultan y evitan la piratería en WordPress. Algunos consejos son para:  bloquear direcciones IP específicas, redirigir a los visitantes a la página de mantenimiento cuando se está rediseñando el sitio en particular, restringir direcciones ip que acceder a la administración WordPress y muchos otros trucos o consejos para .htaccess en WordPress.

Como ya os hemos dicho lo que presentamos a continuación son unos simples trucos o hacks para htaccess, pero si queréis configurar correctamente un fichero .htaccess no podéis dejar de leer la guía de referencia de .htaccess.

1 Bloquear IPs de usuarios o bots indeseados

  1. order allow,deny
  2. allow from all
  3. deny from 123.456.789
  4. deny from 93.121.788
  5. deny from 223.956.789
  6. deny from 128.456.780

2 Limpiar fechas en urls con htaccess

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

3 Redireccionar a una página de mantenimiento

  1. RewriteEngine on
  2. RewriteCond %{REQUEST_URI} !/maintenance.html$
  3. RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
  4. RewriteRule $ /maintenance.html [R=302,L]

4 htaccess: Redirigir hacia www

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

5 htaccess: Redirigir hacía el dominio

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

6 Url canónica con htaccess

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

7 Redirigir el feed hacia FeedBurner

  1. RewriteEngine on
  2. RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
  3. RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
  4. RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/webanddesigners [R=302,NC,L]

8 Redirigir el feed de los comentarios

  1. RewriteEngine on
  2. RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
  3. RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
  4. RewriteRule ^comments/feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/webanddesigners [R=302,NC,L]

9 Redirecciones 301 con htaccess

  1. Redirect 301 /abc/file.html http://www.yourblogname.com/def/file.html

10 Forzar la cache desde htaccess

  1. FileETag MTime Size
  2. ExpiresActive on
  3. ExpiresDefault "access plus x seconds"

11 Restringir las IPs que acceden a la administración de WordPress

  1. AuthUserFile /dev/null
  2. AuthGroupFile /dev/null
  3. AuthName "Wordpress Admin Access Control"
  4. AuthType Basic
  5. order deny,allow
  6. deny from all
  7. allow from xx.xx.xx.xx

12 Bloquear comentarios spam

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

13 Bloquear una IP spam

  1. order allow,deny
  2. deny from 200.49.176.139
  3. allow from all

14 Denegar acceso al fichero de configuración de WordPress(wp-config)

  1. order allow,deny
  2. deny from all

15 Limitar el peso de los archivos subidos

  1. LimitRequestBody 10240000

16 Personalizar la página 404 con htaccess

  1. ErrorDocument 401 /err/401.php
  2. ErrorDocument 403 /err/403.php
  3. ErrorDocument 404 /err/404.php
  4. ErrorDocument 500 /err/500.php

17 Añadir barra (/) al final de las urls

  1. RewriteBase /
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteCond %{REQUEST_URI} !#
  4. RewriteCond %{REQUEST_URI} !(.*)/$
  5. RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]

18 Proteger directorios con claves

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

19 Resolver errores en urls con htaccess

  1. CheckSpelling On

20 Asegurar los plugins de WordPress

  1. order allow,deny
  2. allow from all


¿Tienes algun truco para htaccess más?, hazlo llegar con un comentario!!


Conoce mis servicios para WP.



Servicios personalizados para profesionales, agencias y PYMES

11 comentarios en “Seguridad en WordPress: 20 tips para .htaccess

  1. Buenos días Juan Luis, Muy interesante este post que publicas sobre .htaccess con los tiempos que corren, cada vez es más necesario cubrir estos puntos débiles. Quería comentarte que el enlace a: “guía de referencia de .htaccess” esta roto.
    Un saludo.

  2. Hola! tengo cuatro dominios con un solo alojamiento.
    dominio 1 alojamiento principal una web y en una carpeta una tienda prestashop.
    dominio 2 solo dominio dirigido a principal web.
    dominio 3 solo dominio dirigido a tienda prestashop
    dominio 4 solo dominio dirigido a tienda prestashop
    Mi pregunta donde coloco los ficheros robots.txt y sitepam.xml?
    Muchas gracias por su respuesta atentamente Francisco

  3. El fichero robots.txt tiene que estar en dominio.tal/robots.txt y el sitemap tiene que quedar dentro del dominio correspondiente, pero lo puedes poner donde te venga bien e indicarlo en robots.txt

  4. Hola un cordial saludo. Tengo el siguiente proble con prestashop 1.5.2 Al momento de hacer modificaciones en los productos, pueder ser precio, características etc, me da error 404 Página no encontrada. Todo venia bien hasta que empecé a configurar todo lo referente a SEO y URL amigables y estoy casi seguro que se trata del archivo .Htaccess y no he tocado nada más porque tengo entendido que al activar las URL amigables desde Back Office de
    Prestashop en ese momento se genera el archivo htaccess.Al igual las fotos de las Subcategorías ahora no las muestra mientras antes de esto si lo hacia. Le he dado mil vueltas y en foros en donde a otros le da el mismo error, se lo da desde otro punto de prestashop y no al momento de modificar productos.
    Agradezco desde ya su ayuda. Mil gracias

  5. Haz una prueba, busca los recursos que no se muestran mirando el código fuente de la página, copia por ejemplo el src de alguna img que no se este mostrando, ponlo en la barra de direcciones y mira si te está redireccionando a alguna parte. Si te pasa algo así está claro que es por .htaccess o algún tipo de redirecciones que tengas implementadas en tu PrestaShop.

  6. Hola, intento cambiar el directorio donde está instalado mi sitio web y luego me queda resolver el tema de modificar los enlaces permanentes. Al parecer esa modificación se realiza desde htaccess, es así?. Qué debo hacer?. Para que quede claro, instalé WordPress 3.51 MultiSitio, pero como es mi primera vez… al instalar acepté que lo hiciera dentro de una carpeta llamada “wp”. Yo acepté y al querer publicar mi sitio… me di con la dura realidad de que el sitio debe estar alojado en el directorio raíz, y que en caso de multisitio… el raíz es el propio dominio, en mi caso sería algo así como public_html/midominio.com mientras que actualmente todo el sitio está en public_html/midominio .com/wp. Qué hago?. En principio edité la línea de .htaccess RewriteBase /wp/ eliminando /wp con lo que la línea quedó simplemente RewriteBase /. Puedo abrir el sitio utilizando cualquier explorador escribiendo simplemente www. dominio .com (antes debía ser www. dominio .com/wp). Pero… al utilizar el sitio con los menúes, etc… las páginas buscan los enlaces permanentes que involucran la carpeta wp. Bien, cómo modifico los enlaces permanentes?. Y los futuros?. En síntesis, cambiar los ya emitidos y el “molde” que los genera. Desde ya muchas gracias. Un saludo.

  7. he añadido el primer truco al htaccess y mi blog ha dejado de funcionar

    a que se puede deber?

  8. Muy buenas Juan Luis,

    Lo primero, por este gran post.

    Una duda. Mi .htaccess que quiero configurar es para Prestashop, imagino que sea igual no?

    Lo que quiero es redireccionar con el 301 la URL de midominio.com a www . midominio . com

    con añadir esta línea, ya está ¿no?:
    RewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} ^marelmujer .com [NC]RewriteRule ^(.*)$ http :// www . marelmujer .com/$1 [L,R=301]

    Saludos y gracias por adelantado!

Deja un comentario

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