Archivo de la categoría: Htaccess

Redirección de HTTP a HTTPS con .htaccess

En las últimas semanas, Google nos recomienda usar en todos nuestros sitios web el protocolo HTTPS, en caso contrario, se mostrará un aviso de sitio inseguro en el navegador, por ahora, Chrome y Firefox.

Si acabas de pasar tu sitio HTTP a HTTPS, no debes olvidarte de redirigir todas las URL antiguas HTTP a HTTPS.

 

Intrucciones para redirigir el tráfico HTTP a HTTPS con .htaccess:

  1. Si no lo tienes creado ya, crea un archivo de texto plano con nombre .htaccess.
  2. Añade las líneas de código del ejemplo que más se adapte a tus necesidades en la parte superior de tu archivo .htaccess.
    1. Reemplaza el texto de los ejemplos con el nombre de tu dominio, o el nombre de tu directorio.
    2. Usa un cliente FTP para subir el archivo .htaccess al directorio de tu dominio.

 

Ejemplos de códigos

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Para especificar un dominio concreto, usar:

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

Para redirigir tráfico de HTTPS sin WWW a HTTPS con WWW:

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

¡Espero que les haya sido útil! ¡Gracias!

Impedir listar un directorio

A veces, tenemos carpetas en el servidor web para almacenar archivos como imágenes, ebooks, juegos, y si la carpeta no tiene un archivo index.html, los usuarios pueden ver un listado con todos los archivos que hay dentro de la carpeta. Con una línea en el archivo .htaccess de nuestro sitio, podremos solucionarlo.

¿Cómo evitar el listado de directorios y archivos con .htaccess?

Una solución es añadir un archivo index.html en blanco, vacío, dentro del directorio del cual no queremos que se visualice su contenido. Pero lo más probable es que no tengamos sólo una carpeta, sino muchas, por lo que esta labor puede resultar poco práctica.

Otra solución a nuestro problema es modificar el archivo .htaccess de la raíz de nuestro proyecto o sitio web añadiendo el siguiente código:

Options -Indexes

Si quieres evitar que se listen únicamente unos determinados archivos,  por ejemplo los archivos .jpg y .gif, puedes usar el código:

IndexIgnore *.jpg *.gif

¡Espero que os haya sido útil!

Redirigir según el idioma del navegador con .htaccess

traduction - pays étrangersImaginenos que tenemos estas direcciones en nuestra web según el idioma:

www.pagina.com  (para español)
www.pagina.com/en  (para inglés)
www.pagina.com/fr  (para francés)

Editando nuestro archivo .htaccess de la siguiente manera, podemos redireccionar a cada una de las páginas a los usuarios en función del idioma con el que tengan configurado su navegador:

RewriteEngine on
RewriteCond %{HTTP:Accept-Language} (en) [NC]
RewriteRule .* http://www.pagina.com/en/ [R,L]

RewriteCond %{HTTP:Accept-Language} (es) [NC]
RewriteRule .* http://www.pagina.com/ [R,L]

RewriteCond %{HTTP:Accept-Language} (fr) [NC]
RewriteRule .* http://www.pagina.com/fr/ [R,L]

Tenéis que tener en cuenta que el archivo .htaccess es muy delicado, cualquier fallo puede dar error y hacer que la web no funcione.

Cómo evitar el hotlinking

Algunas veces, otros webmasters o bloggers usan imágenes, videos,…, de tus páginas web enlazando directamente a tu contenido. Si estas personas tienen un tráfico importante en sus sitios, consumiran el ancho de banda disponible en tu servidor. Estarás siendo víctima del hotlinking, otras páginas web estaran enlazando a tus contenidos desde páginas externas sin aportarte ningún beneficio ni ventaja.

Para evitar esta mala práctica puedes usar el siguiente código, así reemplazarás la imagen original por otra con un aviso para hacerles saber el daño que provoca el hotlinking:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://sitio.com*/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://sitio.com*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|zip)$ http://sitio.com/no_se_permite_hotlinking.jpg [L]

Puedes subir la imagen en ImageShack o cualquier otro sitio de almacenamiento de imágenes y así evitar que el ancho de banda de tu servidor se vea afectado.

 

Si prefieres que no se muestre nada puedes usar el siguiente código:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://sitio.com*/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://sitio.com*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|zip)$ - [F,NC]

Los tipos de archivos o extensiones de archivo que generalmente se bloquean son los siguientes: jpg, jpej, png, gif, zip, swf.

 

Algunos servidores ofrecen la posibilidad de evitar el hotlink con una sencilla configuración en el panel de control CPanel, usando la herramienta hotlink y especificando los archivos a los que deseas impedir el acceso separados por comas.

Cómo cachear imágenes con .htaccess

Si queremos que nuestra página web vaya más rápida, una de las cosas que tenemos que hacer es almacenar en la caché las imágenes, css y javascripts de nuestro sitio, haciendo que cada vez que naveguen los usuarios por nuestro sitio no tengan que descargar de nuevo todos los archivos, sino que el servidor web los busque en la caché, eso acelerará mucho la carga y la navegación de nuestro sitio web.

Para ello solo tenemos que pegar el siguiente código en nuestro archivo .htaccess:

ExpiresActive On
ExpiresByType image/gif A432000
ExpiresByType image/jpg A432000
ExpiresByType image/jpeg A432000
ExpiresByType image/png A432000
ExpiresByType image/ico A432000
ExpiresByType image/bmp A432000
ExpiresByType text/css A432000
ExpiresByType text/javascript A432000
ExpiresByType application/javascript A432000
ExpiresByType application/x-javascript A432000

Este código guarda en caché los archivos durante cinco días o 432.000 segundos.

Si queremos que se guarden los archivos durante más tiempo en la caché:

ExpiresActive On
 ExpiresByType image/jpg "access 1 year"
 ExpiresByType image/jpeg "access 1 year"
 ExpiresByType image/gif "access 1 year"
 ExpiresByType image/png "access 1 year"
 ExpiresByType text/css "access 1 month"
 ExpiresByType text/html "access 1 month"
 ExpiresByType application/pdf "access 1 month"
 ExpiresByType text/x-javascript "access 1 month"
 ExpiresByType application/x-shockwave-flash "access 1 month"
 ExpiresByType image/x-icon "access 1 year"
 ExpiresDefault "access plus 1 month"

 

Cómo impedir listar los archivos de un directorio

A veces no queremos que se puedan mostrar los archivos que tenemos en un determinado directorio (directorio con imágenes, por ejemplo), pero si la carpeta no tiene un archivo index.html, los usuarios que lo visitan pueden ver un listado con todos los archivos que hay dentro de ella. Para evitar que esto ocurra, puedes añadir en tu archivo .htacess la siguiente línea de código:

Options -Indexes

El archivo .htaccess se encuentra en el directorio raíz de nuestro servidor. Si no lo podéis ver, comprobad que el explorador de archivos que estáis usando permite ver archivos ocultos.

Espero que os haya sido de ayuda. Saludos!

Cómo redireccionar urls a con o sin www con .htaccess

Cuando tienes un sitio web es muy importante que los buscadores sólo puedan acceder de una forma a éste (con o sin www), o mejor dicho, que puedan acceder al sitio de cualquier modo pero los redireccionemos siempre a uno, ya sea con www o sin www, para evitar el contenido duplicado o que la importancia de nuestro sitio se vea dividida en dos.

Para hacer esta redirección utilizamos el archivo .htaccess (si usáis WordPress podéis usar plugins). El archivo .htaccess se encuentra en el directorio raíz del servidor, para editarlo podéis usar un editor de texto plano. Si no encontráis el archivo, comprobad que en el explorador del servidor se están mostrando los archivos ocultos, ya que el fichero .htaccess se crea oculto.

El código fuente que tenéis que añadir a vuestro fichero .htaccess es el siguiente:

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]

 

Tras configurar esto si accedemos en nuestro navegador a “http://www.midominio.com” podremos ver en la barra de direcciones del navegador que se está mostrando “midominio.com“ o al revés, en función del código que hayamos escogido.