fbpx

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!

Etiquetas:
3 comentarios
  • Alfredo Garaban
    Enviado el 00:08h, 21 noviembre Responder

    Excelente Articulo, muchas Gracias!

  • mitza.es
    Enviado el 11:59h, 04 abril Responder

    Es imprescindible poner la url completa de la página destino ? Veo en muchas webs solamente la ruta, sin el dominio y personalmente creo que te puede quitar algún que otro problema (como pasar un 301 a la versión equivocada sin ssl o sin www).

    Buen articulo.

    Redirect 301 /antiguo.php http://tudominio.com/nuevo.php

    • aquihaydominios
      Enviado el 12:34h, 09 abril Responder

      Hola,
      eso depende de si creas una redirección a la misma página web o no. Si es otra página web, es imprescindible, si es la misma, no lo es.
      Saludos

Déjanos un comentario