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

* Tu valoración puede tardar hasta 72 horas en publicarse.

He leido y acepto el Aviso legal y condiciones de uso

Utilizamos cookies propias necesarias para el correcto funcionamiento de la web y personalizar el contenido. No utilizamos cookies de terceros ni guardamos información personal sobre ti. Puedes encontrar más información en nuestra Política de cookies.

ACEPTAR
Aviso de cookies