Mejora el SEO, rendimiento y seguridad web con .htaccess

Mejora el SEO, rendimiento y seguridad web con .htaccess

Desde bloquear IP con htaccess hasta mejorar el SEO y la seguridad web.

En esta entrada comentaré un poco qué función tiene el archivo .htaccess. Cómo afecta al rendimiento de la web, cómo nos ayuda a mejorar el SEO y la seguridad web.

El archivo .htaccess es un fichero de texto donde puedes definir directivas de configuración por cada directorio en servidores Apache, aunque algunos proveedores de hosting usen nginx y adapten estos ficheros por medio de traductores.

Debemos saber que a parte de poder definir nuestras propias directivas Apache tiene un archivo de configuración principal y dependiendo de nuestras necesidades debemos definir unas directivas en un lugar o en otro.

A continuación te contaré para qué sirve un archivo de configuración .htaccess. Cómo puedes mejorar la seguridad de tu sitio web con él. Cómo aumentar el rendimiento de tu servidor con htaccess.

Importante, antes de probar cualquiera de los siguientes modificaciones sobre el archivo .htaccess realice una copia de seguridad de éste. Si se encuentra algún error en el mismo, probablemente su web dejará de visualizarse correctamente.

 


 

Mejora la seguridad web con .htaccess

Autenticación - Como proteger una web con .htaccess y .htpasswd

Debe incluir en el fichero .htaccess las siguientes líneas, tenga en cuenta que debe crear un fichero .htpasswd e introducir uno o varios usuarios  con sus respectivas contraseñas, los cuales tendrán acceso. Puedes generar un fichero .htpasswd desde esta web: htaccesstools.com/htpasswd-generator

Si quiere puede copiar esta misma línea en el fichero .htpasswd y ya podrá acceder con usuario: test y contraseña: test

test:$apr1$amk9SuDY$FrzUKysBczxwnCydsVRph1
# para proteger un sólo archivo
AuthType Basic
AuthName "Para visualizarlo debes autenticarte primero"
AuthUserFile .htpasswd
Require valid-user
# para proteger un directorio completo resides AuthType basic AuthName "El directorio está protegido primero debes autenticarte" AuthUserFile /home/path/.htpasswd AuthGroupFile /dev/null Require valid-user

 

Listado de directorios

Si queremos deshabilitar la navegación por los directorios de nuestro sitio debemos introducir esta línea:

Options All -Indexes

 

Bloquea el acceso por IP htaccess

Puedes bloquear el acceso a tu web por IP con htaccess. Para evitar robots, usuarios, etc… Añade el siguiente código:

allow from all
deny from X.X.X.X
#deny from 8.8.8.8

 

Permite el acceso por IP

Igualmente puedes permitir el acceso sólo a ciertas IPs. Añade el siguiente código:

ErrorDocument 403 https://www.miguelgomezsa.com
Order deny,allow
Deny from all
Allow from X.X.X.X
Allow from 8.8.8.8

 

Bloquea todas las peticiones del user-agent

Por medio del archivo .htaccess también es posible bloquear el acceso a los user-agents indeseados, tal vez porque sean dañinos o simplemente para reducir la carga del servidor.

#Block bad bots
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
Order Allow,Deny
Allow from all
Deny from env=bad_bot

 

Protege un archivo específico

Deniega el acceso a cualquier archivo que desees, mostrando una página de error 403 cuando alguien intente acceder al mismo:

#Protect the .htaccess File
order allow,deny
deny from all

 

Deshabilita la ventana de aviso de descarga

A parte de la configuración del navegador para la descarga de archivos, el servidor puede enviar una acción predeterminada para descargar archivos o abrirlos desde el navegador. Obliga a que el fichero se visualice en el navegador con las siguientes líneas:

AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov

 


 

Mejora el SEO con .htaccess

URLs amigables

Si quieres quitar palabras de una URL, htaccess te ayuda. Ahora reduciremos la siguiente URL, eliminaremos “blog” de nuestras URL, es decir: https://miguelgomezsa.com/blog/ blue -> https://miguelgomezsa.com/ blue

Agrega este código al final de tu .htaccess:

 

RewriteRule ^blog/(.+)$ https://miguelgomezsa.com/ $1[R=301,L]

 

Quitar la extensión del archivo de una URL

Para que sea más amigable al usuario y a los buscadores, por ejemplo “https://miguelgomezsa.com/ blog.html” -> “https://miguelgomezsa..com/ blog”

 

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

 

Redirecciones con redirect 301 y redirect 302

Si has cambiado el enlace a una entrada, quieres cambiar la URL a una página o bien has cambiado de dominio puedes usar lo siguiente para que los motores de búsqueda se percaten del cambio, para ello usaremos los famosos redirect 301 y redirect 302:

 

# Con esta línea en la raíz del dominio miguel-old.com estaríamos redirigiendo permanentemente todo el contenido a miguelgomezsa.com
RewriteEngine On
RewriteRule ^(.*)$ https://miguelgomezsa.com/ $1 [R=301,L]

# Para redirecciones permanentes Redirect 301 /blog-de-miguel https://miguelgomezsa.com/ blog
# Para redirecciones temporales Redirect 302 /blog/crear-entrada https://miguelgomezsa.com/ blog/creando-mi-blog # También funciona con sub-dominios, por ejemplo con estas líneas en el sub-dominio blog.petsos.es RewriteEngine On RewriteRule ^(.*)$ https://petsos.es/blog/ $1 [R=301,L]

 

Páginas de error personalizadas

Puedes definir una página por cada tipo de error 401, 403, 404, 500,...

ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

 

Quitar “www” del dominio

Debemos asugurarnos que nuestro contenido no se muestra duplicado, es decir, no mostramos el mismo contenido en www.miguelgomezsa.com y miguelgomezsa.com. Para ello podemos decidir cual es nuestro dominio principal, y redireccionar el otro a este último. En el siguiente ejemplo hemos decidido que nuestro dominio principal es el dominio sin "www". 

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

 

Redireccionar de www a sin www

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

 

Redirecionar de sin www a con www

RewriteEngine On
RewriteCond %{HTTP_HOST} ^dominio.com
RewriteRule ^ http://www.dominio.com%{REQUEST_URI} [L,R=301]

 

 

Migra de HTTP a HTTPS con .htaccess

Cada día es más importante la seguridad. Google lo tiene en cuenta y lo tiene claro, un web segura es una web que va a posicionar mejor respecto a otras.

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

 


 

Mejora el Rendimiento Web con .htaccess

Comprime componentes con mod_deflate

A parte de la compresión Gzip, puedes usar mod_deflate de apache. Usa la siguiente línea en la parte superior de tu archivo .htaccess para habilitar la compresión en tu servidor:

SetOutputFilter DEFLATE

 

Comprimir con Gzip

Si comprimes la salida del servidor con Gzip mejorarás considerablemente la velocidad de tu sitio web:

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

 

Agrega headers de expiración a los archivos

Definir las cabeceras de expiración ayuda a que el navegador conserve ciertos archivos y no los vuelva a pedir al servidor, esto ayuda a reducir las peticiones a este último y aumenta el rendimiento de tu web:

Header set Expires "Wed, 21 May 2016 20:00:00 GMT"

 

Forzar el cacheo

Como ya he comentado en el ejemplo anterior la caché puede mejorar el rendimiento, sobre todo para usuarios que vuelven a tu sitio después de un tiempo. Con esta línea se puede cambiar la frecuencia de cacheo, establecida en segundos:

FileETag MTime Size
ExpiresActive on
# un día tiene 86400 por tanto se pedirán los archivos cada día
ExpiresDefault "access plus 86400 seconds"

 

Prevenir Hot Linking

El hot linking es una técnica usada para cargar archivos alojados en tu servidor desde otro dominio. Al hacer esto están haciendo uso de tu ancho de banda mermando así el rendimiento de tu web, y lo que es peor, si tu hosting no te ofrece transferencia o tráfico ilimitado puedes consumirlo entero, entonces te quedarás sin servicio o tendrás que pagar por cada gigabyte extra transferido. Si quieres evitar que enlacen tu contenido puedes hacerlo añadiendo estas líneas a tu archivo .htaccess:

Options +FollowSymlinks
#Protect against hotlinking
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www.)?miguelgomezsa.com/[nc]
RewriteRule .*.(gif|jpg|png)$ https://miguelgomezsa.com/img/miguel-gomez-logo.jpg[nc]

 


 

Otros trucos de .htaccess

Definir página principal por defecto:

Puedes elegir que archivo es el primero en mostrarse por defecto, y sustituir de esta forma la prioridad por el más que conocido archivo “index”.

#Serve Alternate Default Index Page
DirectoryIndex about.html

 

Redirigir los Feeds de WordPress a FeedBurner o al tuyo propio

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

 

 

Más información sobre htaccess aquí: httpd.apache.org/docs/2.2/howto/htaccess.html#how

Dos páginas webs muy útiles y que recomiendo para genarar reglas htaccess son:

www.htaccessredirect.net

www.htaccesstools.com 

www.regextester.com

Si tienes alguna duda o sugerencia, no dudes en poner un comentario.

Puedes compartir esta entrada en las redes sociales si crees que puede interesarle a alguien más.