El fichero .htaccess es el nombre que tiene por defecto el archivo de configuración de directorios de muchos servidores HTTP, popularizado por Apache, se utiliza principalmente para personalizar la configuración por defecto del servidor de alojamiento web, permitiendonos establecer ciertas reglas y parametros, de esta forma obligamos al servidor a actuar de una forma determinada.
Principalmente utilizamos este archivo para redirigir un directorio a otro, crear url´s amigables, restringir el acceso a nuestro sitio a ciertas direcciones IP, crear un registro de errores, crear páginas de error personalizadas, ocultar las extensiones de archivo en la barra de direcciones y multitud de tareas mas que veremos a lo largo de este articulo.
Si eres desarrollador web, es imprescindible que conozcas las principales caracteristicas y configuración de este fichero, existen tambien herramientas online que pueden ayudarnos en la tarea de configurar nuestro “.htaccess”, estas las veremos al final del articulo.
El fichero “.htacess” debe colocarse en el directorio donde queremos realizar los recursos que contiene el archivo, en un sitio web, puede haber diferentes archivos “.htaccess” si están en diferentes directorios.
A continuación os presento un listado de instrucciones que utilizo habitualmente en muchos de mis proyectos:
Ocultar las extensiones de archivo en la barra de direcciones
Bien sea por hacer la url mas atractiva y amigable para los usuarios, o bien por que no queremos que el usuario sepa con que lenguaje estan escritos los archivos del proyecto, con este hack podemos ocultar en la barra de direcciones la extensión del archivo que se está visualizando, este codigo está basado en WordPress.
<IfModule mod_rewrite.c>
# Activar RewriteEngine
RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ $1.php
</IfModule>
Utilizamos el modulo “RewriteEngine on” para habilitar “mod_rewrite” si no está habilitado en el servidor.
Almacenamiento en caché
Si activamos el almacenamiento en caché de la página, mejoraremos la velocidad de carga de los usuarios que ya han visitado nuestra página, esto está muy bien valorado por los motores de busqueda, por lo tanto mejora el posicionamiento de la misma.
# Especificaciones cache
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 10 days"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/plain "access plus 1 week"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/x-icon "access plus 3 months"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/x-icon "access plus 3 months"
</IfModule>
Redirigir el dominio
Si por alguna razón queremos redirigir nuestro dominio sin “www” a “www” usamos el siguiente codigo:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^didesweb.com
RewriteRule (.*) https://www.didesweb.com/$1
Para redirigir nuestro dominio “www” a nuestro dominio sin “www” usamos el siguiente codigo:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.didesweb.com
RewriteRule ^(.*)$ https://didesweb.com/$1
Paginas personalizadas para cada tipo de error
Cada servidor incluye sus páginas por defecto de error, para que se muestren la pagina de error personalizada de nuestra propia plantilla, obligamos al servidor a redirigir al usuario a la dirección donde tenemos ubicado nuestro archivo personalizado.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /errordocument.php
ErrorDocument 400 https://www.didesweb.com/errordocument.php
ErrorDocument 401 https://www.didesweb.com/errordocument.php
ErrorDocument 403 https://www.didesweb.com/errordocument.php
ErrorDocument 404 https://www.didesweb.com/errordocument.php
ErrorDocument 500 https://www.didesweb.com/errordocument.php
Cambiar la página de inicio por defecto
Al entrar a nuestro sitio web, se accede por defecto al archivo “index.xxx”, con el siguiente código podemos cambiar la página de inicio por defecto.
DirectoryIndex didesweb.php
Bloquear direcciones IP
Podemos denegar el acceso a nuestro sitio a ciertos usuarios basandonos en una dirección IP
order allow,deny
deny from xxx.xx.xx.xx
deny from xxx.xx.xx.x
allow from all
Comprimir archivos
Existe una alternativa a la compresión Gzip y la diferencia entre ambas es abismal, no en el tiempo de carga (existe una discusión muy extendida sobre cual de los dos es más rápido), sino en el de implementación. Activando “mod_deflate” tendremos la misma compresión de archivos que con Gzip, pero implementado en una sola línea.
SetOutputFilter DEFLATE
Esta línea debe de estar la primera en el archivo “.htaccess” para comprimir todos los archivos, esta funcionalidad depende en gran medida de la compatibilidad con el servidor de alojamiento web, tambien podemos usar el siguiente codigo.
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
Comprimir archivos por tipos
Podemos utilizar la compresión de archivos activando “mod_deflate” solamente para ciertos tipos de archivo, para archivos .css, el codigo seria el siguiente:
<Files *.css>
SetOutputFilter DEFLATE
</Files>
Para archivos .js
<Files *.js>
SetOutputFilter DEFLATE
</Files>
Definir el idioma por defecto
Ejemplo para definir el Español como lenguaje principal de un sitio web
DefaultLanguage es
Definir juego de caracteres
Con este código definimos el juego de caracteres por defecto de nuestro sitio
AddDefaultCharset UTF-8
Tambien podemos definir el juego de caracteres para diferentes tipos de archivo.
AddType 'text/html; charset=UTF-8' .html
O bien, para un archivo especifico
<Files "didesweb.php">
AddCharset UTF-8 .php
</Files>
Redireccionar URL
Si por alguna razón hemos movido o cambiado de nombre archivos en nuestro sitio web, podemos redirigir el tráfico a la nueva ruta o nombre de archivo con el siguiente código.
Redirect 301 /d/archivoantiguo.html http://www.dominio.com/archivonuevo.html
Evitar que otras páginas consuman nuestro ancho de banda
Algunas páginas web incorporan imágenes y otros contenidos enlazandolos directamente desde nuestro sitio, consumiendo de esta forma nuestro ancho de banda disponible, para evitar esto utilizamos el siguiente código.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^https://didesweb.com
RewriteCond %{HTTP_REFERER} !^https://www.didesweb.com
RewriteRule .*[Jj][Pp][Gg]$|.*[Gg][Ii][Ff]$ https://www.didesweb.com/empty.html [L]
#didesweb.com/empty.html - your custom hotlinker page
Controlar el acceso a ciertos directorios o archivos
Para denegar el acceso a un directorio especifico utilizamos:
#deny all access
deny from all
Para denegar el acceso a un archivo especifico utilizamos:
<Files archivo.html>
Order allow,deny
Deny from all
</Files>
Autentificación básica
He dejado esta parte para lo último, para proteger un directorio con usuario y contraseña, debemos crear (si no existe) el archivo “.htpasswd”, en este archivo guardaremos una lista con los nombres de usuario y contraseñas, veamos un ejemplo
usuario1:sXqit25vTbo3o
usuario2:9aJdOsUjQZrF
Ahora pegamos el siguiente código en el archivo “.htaccess”
<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile ../passwords/.htpasswd.php
AuthGroupFile /dev/null
AuthName "Por favor, ingresa tu usuario y contraseña"
AuthType Basic
require valid-user
order deny,allow
Generadores de codigo
Existen recursos como .htaccessEditor, una herramienta online con la que podemos generar el codigo necesario para realizar algunas tareas en el servidor, puedes acceder a ella desde el siguiente enlace:
Acceder a .htaccessEditor
Otra herramienta online con la que podemos generar el codigo para realizar algunas tareas es el generador de .htaccess de la web de Webexperto:
Acceder a webexperto.com
Espero que os hayan sido sean de utilidad.
Valoraciones
Sé el primero en valorar