El .htaccess ideal para WordPress

El .htaccess ideal para WordPress

wp-htaccessSiempre que se habla de WordPress a nivel técnico, se menciona el uso del archivo .htaccess. a través del cual se puedes conseguir proteger tu web, mejorar la usabilidad… a través de funciones. Si nunca has oído hablar de él, te mostramos la definición de Wikipedia:

Un fichero .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache.

La protección y usabilidad de tu web suelen ser temas de bastante interés, así que hemos preparado una recopilación de sus funciones, tanto de usabilidad como de seguridad.

Lo primero que vamos a explicar es cómo crear tu archivo .htaccess en tres sencillos pasos:

  1. Crea un archivo en blanco .htaccess. Esto se puede hacer desde el Bloc de notas o cualquier editor de texto plano. Abre tu editor y haz clic en Guardar (en blanco), el nombre con que lo guardaremos será htaccess.txt (este será modificado una vez que lo subamos al servidor). Si tu sitio ya tiene un archivo .htaccess, decárgalo y edítalo (te aconsejamos hacer una copia antes por si acaso).
  2. Añade contenido a htaccess.txt.
  3. Súbelo al servidor y quita la extensión .txt

Algunas de las cosas que puedes hacer con este archivo son:

  • Limitar tamaño de carga
  • Proteger wp-config.php
  • Proteger la carpeta wp-admin
  • Desactivar la exploración de directorios
  • Redireccionar páginas (por ejemplo: redireccionar URLs antiguas a nuevas)
  • Permitir la compresión de PHP
  • Evitar spam en comentarios de blogs

A continuación te detallamos algunas acciones que te serán de gran utilidad:

Proteger el mismo fichero htaccess


#Proteger el mismo fichero htaccess
<files .htaccess>
order allow,deny
deny from all
</files>

Proteger htaccess de manera extrema


#Proteger htaccess de manera extrema
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

Desactivar la firma de servidor


#Desactivar la firma de servidor
ServerSignature Off

Limitar la carga de archivos a 10mb


#Limitar la carga de archivos a 10mb
LimitRequestBody 10240000

Proteger el fichero wpconfig.php


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

Proteger wp-admin por IP


#Proteger wp-admin por IP
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “Access Control”
AuthType Basic
order deny,allow
deny from all

IP ubicación hogar


#IP ubicación hogar
allow from xx.xxx.xxx.xx

IP ubicación oficina


#IP ubicación oficina
allow from xx.xxx.xxx.xxx
allow from xxx.xxx.xxx.600

IP de otros usuario con permisos


#IP de otros usuario con permisos
allow from xxx.xxx.x.xx
allow from xxx.xxx.x.xx

Desactivar la navegación de directorios


#Desactivar la navegación de directorios
Options All -Indexes

Bloquear los dominios indicados


#Bloquear los dominios indicados
RewriteEngine on
RewriteCond %{HTTP_REFERER} meneame\.com [NC]
RewriteRule .* - [F]

Establecer documentos personalizados de error (Cambiar por tus propias rutas)


#Establecer documentos personalizados de error (Cambiar por tus propias rutas)
ErrorDocument 404 /notfound.php
ErrorDocument 403 /forbidden.php
ErrorDocument 500 /error.php

Desactivar el listado de carpetas y archivos


#Desactivar el listado de carpetas y archivos
Options All -Indexes

Redirigir un dominio viejo al nuevo – si es necesario


#Redirigir un dominio viejo al nuevo - si es necesario
Redirect 301 /antiguo.php http://tudominio.com/nuevo.php

Desactivar el hotlinking con una imagen de reemplazo


#Desactivar el hotlinking con una imagen de reemplazo
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.xyz.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.xyz.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://xyz.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://xyz.com$ [NC]
RewriteCond %{HTTP_REFERER} !google. [NC]
RewriteCond %{HTTP_REFERER} !msn. [NC]
RewriteCond %{HTTP_REFERER} !live. [NC]
RewriteCond %{HTTP_REFERER} !yahoo. [NC]
RewriteCond %{HTTP_REFERER} !gravatar. [NC]
RewriteCond %{HTTP_REFERER} !search?q=cache [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ - [F,NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://tudominio.com/imagen_robada.gif [R,L] (opcional una imagen en reemplazo)
</IfModule>

Comprimir php – usar con precaución


#Comprimir php - usar con precaución
php_value zlib.output_compression 16386

Establecer la url canónica (amigable)


#Establecer la url canónica (amigable)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^tudominio\.com$ [NC]
RewriteRule ^(.*)$ http://www.tudominio.com/$1 [R=301,L]

Proteger de los comentarios spam


#Proteger de los comentarios spam
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*tublog.com* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
</IfModule>

Baneo por IP


# Baneo por IP
<Limit GET POST>
order allow,deny
deny from xx.xx.xxx.xxx /reemplazar la IP a banear
allow from all
</Limit>

Baneo por dominio


# Baneo por dominio
RewriteEngine On
Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} dominio_a_banear\.com [NC]
RewriteRule .* - [F]

Ten en cuenta que puede que no necesites utilizar todas las funciones que mencionamos, para ello puedes ir agregando solo las que te sean de utilidad a tu archivo .htaccesss.txt. Una vez hecho esto, solo falta subir el fichero .htaccess.txt a tu servidor. Recuerda siempre hacer una copia del que está actualmente en el servidor, puedes hacerlo simplemente renombrándolo de .htaccess a .htaccess-old. Sube a tu servidor el archivo que has creado / modificado (.htacces.txt) y renómbralo quitando .txt. De esta manera quedará activo.

Si quieres puedes comentarnos qué normas has implementado a tu sito y cuáles te han resultado de utilidad. Gracias!

Saludos!

Entradas relacionadas
Certificado de seguridad
Google mostrará “web no segura” a todas las que no usen HTTPS

Si quieres que tu web no sea marcada como web no segura por Google, debes tener una web en HTTPS con certificado de seguridad.

Leer más
Detectar malwares en WordPress

De nuevo volvemos a tratar un tema importante en los sitios webs: la seguridad en WordPress. Siempre hablamos de precauciones para evitar malwares, pero hoy hablaremos […]

Leer más
Proteger WordPress de ataques y malwares

Como siempre mencionamos, WordPress se ha convertido en uno de los CMS más utilizados en sitios de gestión de contenidos. Gracias a su crecimiento, ha logrado […]

Leer más
1 comentario

Deja un comentario

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