¡ Abra Cadabra ! Hoy vamos a hacer un poco de magia, bueno….. al menos os voy a desvelar algún truquillo rápido que podemos utilizar en nuestras páginas webs para conseguir grandes resultados, para optimizar nuestra web, mejorar su velocidad o su seguridad . Y todo esto va a ser más sencillo de lo que parece, lo vamos a conseguir tocando un simple archivo.
El archivo en cuestión, va a ser el .htaccess, un archivo de acceso a hipertexto o archivo de configuración distribuida, que conocemos todos aquellos que hemos utilizado un Servidor HTTP Apache en alguna ocasión para gestionar la configuración de nuestro sitio web. En CMSs como WordPress está presente, aunque como archivo oculto.
Muchos de vosotros no habréis tocado este archivo nunca, otros muchos lo habréis tocado en alguna ocasión para realizar redirecciones, pero seguro que pocos lo habéis sacado partido al 100%, por eso en este post vamos a intentar desvelar algunos de los mejores hacks o trucos para nuestro archivo .htaccess.
OJO , acuérdate de realizar una copia de seguridad de tu archivo .htaccess antes de realizar cualquiera de los siguientes cambios, ya que estamos tocando un archivo clave en nuestras webs y siempre es mejor prevenir que lamentar ( que curar está muy visto ). 😉
Contenido
- 1.Bloquear el acceso a ciertas IPs a través del .htaccess
- 2. Crear redirecciones 301 rápidamente a través del archivo .htaccess
- 3. Crear una redirección cuando tenemos la web en mantenimiento
- 4. Acelerar la velocidad de nuestro sitio deshabilitando el autoguardado de revisiones en WordPress
- 5. Bloquear el acceso a los archivos importantes a todas las direcciones IP menos la nuestra
- 6. Hacer los archivos de configuración php inaccesibles
- 7. Poner un límite al tamaño de los archivos
- 8. Añadir contraseña a nuestros directorios
- 9. Activar el autocorrector de errores de escritura en URLs
- 10.Asegurar los archivos de plugins de WordPress
- 11. Añadir siempre una contrabarra , barra diagonal o slash al final de nuestra URL
- 12. Redirigir a los usuarios hacia páginas de error 404 personalizadas
- 13. Evitar que los spammers hagan comentarios en nuestro blog
- 14. Añadir y customizar los permalinks para crear mejores URLs
- 15. Usar el archivo .htaccess file para forzar cacheo
- 16. Redireccionar URLs con mayúsculas a minúsculas
- 17. Bloquear herramientas
1.Bloquear el acceso a ciertas IPs a través del .htaccess
Sí hace unas semanas vimos alguna otra forma de bloquear a algunas IPs el acceso a nuestra web en cómo bloquear los comentarios de spam en WordPress , pero hoy vamos a ver una nueva forma de realizar una lista negra de IPs y bloquearlas con nuestro protagonista del post, el htaccess. Bastará con introducir las siguientes lineas:
1 2 3 4 5 6 | order allow,deny allow from all deny from 125.413.659 deny from 91.115.676 deny from 201.648.732 deny from 108.301.285 |
Y en el caso de que sólo queramos bloquear a un usuario:
1 2 3 4 5 | ## USER IP BANNING order allow,deny deny from xxx.xx.xxx.xxx allow from all |
Con esto dirás adiós a todas aquellas IPs que estaban resultando un dolor de cabeza.
2. Crear redirecciones 301 rápidamente a través del archivo .htaccess
Quizás sea el hack más utilizado, y más conocido, pero no está de más volver a sacarlo a la luz, para todos aquellos que aún no hayáis realizado una redirección 301 a través del archivo .htaccess , algo todavía más sencillo que el hack anterior y que resulta indispensable cuando borramos contenido importante o movemos página de una URL a otra.
1 2 3 | #301 Redirects Redirect 301 /hacks-htaccess/ https://www.diego10arnaiz.com/mejores-hacks-htaccess/ |
3. Crear una redirección cuando tenemos la web en mantenimiento
En CMSs como WordPress contamos con estupendos plugins, pero si te gusta ser detallista, y hacer hasta la página de mantenimiento a medida en un documento html, podemos utilizar la siguiente regla en nuestro archivo .htaccess para dirigir todo el tráfico de nuestra web hacia nuestra estupenda página de mantenimiento donde indicaremos a los visitantes que estamos en obras y que pronto estaremos de vuelta……
1 2 3 4 | RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.html$ RewriteCond %{REMOTE_ADDR} !^123.123.123.123 RewriteRule $ /maintenance.html [R=302,L] |
Además con esta regla nos aseguramos de enviar un 302 para indicar que nuestra web esta redirigida sólo temporalmente.
4. Acelerar la velocidad de nuestro sitio deshabilitando el autoguardado de revisiones en WordPress
WordPress guardar revisiones de todas nuestros posts y nuestras páginas a tiempo real, mientras estamos creándolas o redactando. Y aunque esto es una funcionalidad de mucha utilidad, para evitar sobresaltos como por ejemplo cuando hay un apagón de luz, este autoguardado, ralentiza bastante nuestra página web. Así que si ponemos en una balanza, tener autoguardados automáticos mientras escribimos o hacer nuestra página web más rápida, tu decides. Si escoges la segunda opción, esto es lo que deberás poner en tu archivo wp-config.php .
1 | define('WP_POST_REVISIONS', false ); |
Si en algún momento quieres recuperar los autoguardados, bastará con que borres esta linea de tu wp-config.php, así de simple activarlo y desactivarlo.
5. Bloquear el acceso a los archivos importantes a todas las direcciones IP menos la nuestra
Vamos con una de seguridad. En el caso de que quieras estar seguro de que ninguna dirección IP excepto la tuya pueda acceder a los archivos que tienes en el directorio de WordPress wp-admin, bastará con introducir el siguiente código y bloquearás el resto de IPs que intenten acceder.
1 2 3 4 5 6 7 8 | AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "Wordpress Admin Access Control" AuthType Basic order deny,allow deny from all allow from xx.xx.xx.xx |
En el directorio wp-admin están localizados todos los archivos relacionados con el dashboard de WordPress, todas las funciones de administración como escribir posts, moderar comentarios, instalar nuevos temas, usar plugins……. por lo que pondremos la tarea un poco más difícil a los hackers que intenten acceder a nuestros archivos de administración para acceder a nuestra web.
6. Hacer los archivos de configuración php inaccesibles
En el archivo config.php guardamos información vital como el nombre de nuestra base de datos, y a esta información la podemos poner un escudo para evitar el acceso a ella. Todo hacker que consiga acceder a esta, tendrá como uno de sus primeros objetivos este archivo, ya que en el puede saber nuestro id de usuario, contraseña o nombre de la base de datos entre otras cosas.
Deberemos usar el siguiente código para crear una protección extra:
1 2 3 4 | # protect wpconfig.php order allow,deny deny from all |
7. Poner un límite al tamaño de los archivos
Esto es algo que muchos de vosotros habréis realizado mediante el archivo php.ini, pero nunca con el .htaccess , con el siguiente código podremos poner un límite al tamaño de los archivos que subimos a nuestra web:
1 2 | #limitar la subida de archivos a 20mb LimitRequestBody 20240000 |
Con esto evitaremos que subamos archivos que vayan a ralentizar de forma significativa nuestra web, y lo más importante, nosotros elegiremos el límite.
8. Añadir contraseña a nuestros directorios
También vamos a poder añadir una protección extra a los directorios de nuestra web con una simple regla en el archivo .htaccess . Con esto podemos evitar que nuestra web sea atacada e incluso afecte a webs que tenemos alojadas en el mismo servidor.
Si hemos realizado copia de seguridad esto es menos preocupante, pero si no la hemos hecho, todo esto puede significar un desastre sin vuelta atrás. Así que además de realizar una copia de seguridad, si no la realizan automáticamente en tu servidor, añade la siguiente regla de seguridad para prevenir que cualquier hacker pueda acceder a tu sitio y a los que estén conectados.
1 2 3 4 | AuthType Basic AuthName "restricted area" AuthUserFile /usr/local/var/www/html/.htpasses require valid-user |
9. Activar el autocorrector de errores de escritura en URLs
Sí, podemos añadir un autocorrector a partir del archivo .htaccess. Mediante la regla que veremos a continuación si olvidamos una letra o cometemos un pequeño fallo ortográfico en nuestras URLs , podremos corregirlo, aunque no funcionará para grandes errores. Para añadirlo deberemos escribir las siguientes lineas en nuestro .htaccess:
1 | CheckSpelling On |
10.Asegurar los archivos de plugins de WordPress
En WordPress la utilización de plugins es más que común, pero también es el puerto de entrada de muchos ataques a nuestra web, especialmente cuando no los tenemos actualizados ,por lo que tener mayor protección en estos puede librarnos de más de un susto. Bastará con añadir las siguientes lineas:
1 2 | order allow,deny allow from all |
11. Añadir siempre una contrabarra , barra diagonal o slash al final de nuestra URL
En una página web, generalmente, cuando las urls tienen un slash (/) al final indican que es un directorio, si no lo tiene archivos corrientes. Pero tener esto diferenciado en nuestra web generará contenido duplicado, por lo que es de vital importancia que en todas las urls , con o sin slash, se añada este al final, para evitar problemas con el usuario y con google, vamos con el código que automatizará esto por nosotros:
1 2 3 4 5 6 | #trailing slash enforcement RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !# RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301] |
12. Redirigir a los usuarios hacia páginas de error 404 personalizadas
También mediante el .htaccess podemos redirigir a nuestros visitantes hacia páginas 404 personalizadas, cuando cualquier página de nuestro site no sea encontrada debido a que la hemos movido o la hemos borrado. Esto hará que nuestra web esté preparada para el usuario en cualquier momento, aunque debemos evitar en la medida de lo posible que salgan estos errores cuando nos visiten, vamos con el código:
1 2 3 4 5 | # custom error pages ErrorDocument 401 /err/401.php ErrorDocument 403 /err/403.php ErrorDocument 404 /err/404.php ErrorDocument 500 /err/500.php |
13. Evitar que los spammers hagan comentarios en nuestro blog
Cuando un spammer visita nuestra página web o blog y quiere dejar un comentario, no actúa de la forma usual, ya que realizan lo que se llama “no referrer requests”, es decir, la primera solicitud presentada es el apartado de comentarios.
Y con la siguiente regla vamos a poder evitar que escriban todas aquellas personas o mejor dicho robots que accedan a nuestra web a dejar comentarios spam con este tipo de solicitudes, aquí vamos:
1 2 3 4 5 6 | RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post.php* RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L] |
Mediante la última linea de código podemos mandar a los spammers a donde queramos. ¿ hacia tu peor enemigo ? ¿ tu competencia ?, mejor no seamos malos……. 😉
14. Añadir y customizar los permalinks para crear mejores URLs
Uno de los usos más populares del .htaccess, y uno que seguramente has utilizado para alguna web, si eres webmaster es el de crear o customizar nuestros enlaces para conseguir que sean más amigables, poder incluir palabras clave en vez de símbolos o números. Y en WordPress es tan sencillo como añadir el siguiente código:
1 2 3 4 5 6 7 8 9 10 | # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress |
15. Usar el archivo .htaccess file para forzar cacheo
Aunque la primera vez que accedemos a una web el cacheo no acelerará la carga inicial, si una persona accede por segunda vez en un mismo nevegador, forzar cache podrá enviar códigos de estado 304 (not modified ) y acelerar la carga de la página si no hemos realizado cambios previos en esta, mediante la siguiente regla:
1 2 3 | FileETag MTime Size ExpiresActive on ExpiresDefault "access plus x seconds" |
16. Redireccionar URLs con mayúsculas a minúsculas
Aunque no suele dar problemas de duplicidad de contenido, me he encontrado casos en webs realizadas con plantillas html en los que una página de dichas webs estaba mostrando un contenido diferente cuando tenemos la URL en mayúsculas que en minúsculas, debido a que hemos realizado una redirección 301 que sólo ha actuado para la versión en minúsculas, por ello suelo añadir siempre el siguiente código, especialmente si no he realizado la web con un CMS como WordPress:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | RewriteEngine On RewriteBase / # If there are caps, set HASCAPS to true and skip next rule RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1] # Skip this entire section if no uppercase letters in requested URL RewriteRule ![A-Z] - [S=28] # Replace single occurance of CAP with cap, then process next Rule. RewriteRule ^([^A]*)A(.*)$ $1a$2 RewriteRule ^([^B]*)B(.*)$ $1b$2 RewriteRule ^([^C]*)C(.*)$ $1c$2 RewriteRule ^([^D]*)D(.*)$ $1d$2 RewriteRule ^([^E]*)E(.*)$ $1e$2 RewriteRule ^([^F]*)F(.*)$ $1f$2 RewriteRule ^([^G]*)G(.*)$ $1g$2 RewriteRule ^([^H]*)H(.*)$ $1h$2 RewriteRule ^([^I]*)I(.*)$ $1i$2 RewriteRule ^([^J]*)J(.*)$ $1j$2 RewriteRule ^([^K]*)K(.*)$ $1k$2 RewriteRule ^([^L]*)L(.*)$ $1l$2 RewriteRule ^([^M]*)M(.*)$ $1m$2 RewriteRule ^([^N]*)N(.*)$ $1n$2 RewriteRule ^([^O]*)O(.*)$ $1o$2 RewriteRule ^([^P]*)P(.*)$ $1p$2 RewriteRule ^([^Q]*)Q(.*)$ $1q$2 RewriteRule ^([^R]*)R(.*)$ $1r$2 RewriteRule ^([^S]*)S(.*)$ $1s$2 RewriteRule ^([^T]*)T(.*)$ $1t$2 RewriteRule ^([^U]*)U(.*)$ $1u$2 RewriteRule ^([^V]*)V(.*)$ $1v$2 RewriteRule ^([^W]*)W(.*)$ $1w$2 RewriteRule ^([^X]*)X(.*)$ $1x$2 RewriteRule ^([^Y]*)Y(.*)$ $1y$2 RewriteRule ^([^Z]*)Z(.*)$ $1z$2 # If there are any uppercase letters, restart at very first RewriteRule in file. RewriteRule [A-Z] - [N] RewriteCond %{ENV:HASCAPS} TRUE RewriteRule ^/?(.*) /$1 [R=301,L] |
Importante que estas líneas de código estén arriba del todo, si no queremos recibir errores,debido a que se van realizando las RewriteRule en bucle hasta que no encuentra ninguna mayúscula, así que al menos que este más arriba de cualquier otra RewriteRule que tengamos en el htaccess.
17. Bloquear herramientas
Sí, mediante el htaccess puedes bloquear el acceso a varias herramientas, como por ejemplo , Screaming Frog, una herramienta que conocerás de sobra si eres SEO.
1 2 3 4 5 | RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*Screaming.*$ [NC,OR] RewriteRule ^(.*)$ - ^ [F,L] |
Estas son algunas de las reglas que podemos utilizar en nuestro htaccess, seguro que alguna conocías , otras no e incluso te sabes alguna muy buena más. Y…….. para eso están los comentarios, para compartir tu experiencia. 😉
Hola
¿alguien me puede ayudar?
Estoy intentando un bloqueo de Direct Access de URL’s, pero todo lo que encuentro es para bloquear archivos como fotografías, documentos, etc.
Explico mi caso. Doy servicio a una escuela, y cuando los alumnos presentan examen, cada examen tiene una URL diferente asignada, pero se copian y pegan las URL para aplicar el mismo examen. Ya intenté todo para evitar que al refrescar o copiar y pegar una URL que no es el acceso que les envío directamente les mandara a la página 404. Pero el tema es que funcionó de maravilla tres días y después extrañamente dejó de funcionar el siguiente código:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(gif|jpg)$ – [F]
Obviamente puedo notar que es sólo para bloquear imágenes o gifs, ¿pero cómo logro lo que necesito?
Por favor ayuuda… ya busqué y no veo plugins o códigos y supongo que no soy la única persona en el mundo que necesita algo así…
:´'(
me llamo antonio y mi identidad esta siendo corrompida y trasjibersada hacia el mal.ahora e dejado las drogas y si e hecho daños materiales y alguna vez a alguna persona por tener mi dosis.ahora gracias a los distintos organos dedicados a este tema ,soy libre de las sustancias y gracias a mi mismo x tomar esta decision de acabar con la destruccion de mi entorno y de mi9 mismo.soy culpable de todo aquello si e echo pero no de lo que no .pido disculpas a todas aquellas personas que an sufreido por mis destrezas en ambos sectores ,ya digo como lo material y fisico.px favor saquelo esto en todas las redes y cadenas televisivas.ALLUDEME.ATT,ANTONIO MASEDA GUZMAN.
Si pero como a nosotros pintores Madrid que somos unos peces en el mundo terrestre, nos parece algo difícil, lo intentaremos y so no lo conseguimos te lo haré saber para que me lo explique, aunque esta muy bien documentado, gracias lo vamos a intentar para mejorar nuestra web.
Seguro que lo conseguís, y de los errores se aprende. Así que a por ello, sino ya sabéis por donde estoy. Un saludo