Introducción al archivo .htaccess

Sí, sí, ya sé que me falta el ejemplo de las matrices o arrays en PHP, y que sólo las he introducido. Permitidme esta licencia…

Valencia, 06/12/2011, G.B.
Voy a cambiar de categoría, más que nada para avanzar un poquito en temas  que considero muy importantes y útiles,  sobre todo si tienes un hosting basado en el servidor Apache. Todos los hosting Linux lo tienen, Por ello .y porque me apetece, cierto es- voy a hablar un poco sobre el archivo de configuración del popular servidor de código libre: el archivo .htacces. Veamos lo que nos cuenta la Wikipedia del mismo:

Un fichero .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache. Fuente: Wikipedia

El archivo .htaccess es un ‘simple’ archivo de texto plano, sin extensión y oculto. Lo importante es que contiene una serie de directivas para el servidor web Apache, en donde está alojado tu proyecto. Así, el servidor web ‘sabrá qué hacer’ ante determinados ‘escenarios’ o circunstancias. Por ejemplo, se usa para restringir el acceso a carpetas, personalizar páginas de errores, redirigir sitios, URL rewriting…

Todos los CMS (gestores de contenido) basados en PHP disponen de este archivo de configuración oculto, habitualmente en el directorio raíz de la instalación de tu CMS, como WordPress, PHP LD o Joomla!, entre muchos otros.

La buena noticia es que no es necesario que lo crees a mano, aunque podrías hacerlo con cualquier editor de texto plano, o de texto plano ‘enriquecido’. Así, con el Notepad.exe de Windows puedes hacerlo, el gedit de Linux o el que más te guste y/o apetezca, Y digo lo de que no es necesario crearlo porque cuando instlas un CMS o gestor de contenidos basado en PHP, el archivo .htaccess ya está listo con su configuración básica para un funcionamiento adecuado de tu sitio bajo WordPress, Joomla!, PHP LD…. Eso sí, si quieres incorporar características especiales y mejoras a tu sitio, deberás editarlo.

Veamos un ejemplo del archivo .htaccess. Es un archivo .htaccess de WordPress, simple, de una versión ‘antigua’, sin ninguna característica adicional, tan sólo con lo necesario para que nos funcione el CMS:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

En este caso, habría que ‘meterle mano’ para optimizarlo.

¿Y cuáles son las posibilidades te ofrece .htaccess?Estas son las más importantes:

  • Restringir el acceso a directorios de tu sitio: muy interesante si tienes un directorio personal, privado, al que no quieres permitir el acceso a personas ni a robots. Prueba a crearlo aquí: http://www.htaccesseditor.com/es.shtml#a_basic
  • Restringir el acceso a IPs o ISPs: hay IPs y dominios que contienen malware. Es importante estar protegido contra ellos. El archivo .htaccess te ayudará a ello.
  • Posibilidad de crear  URLs Amigables (semánticas): muy importante por tema SEO
  • Manejar errores del servidor: qué hacer, a qué página dónde redirigir dependiendo del tipo de error (error 401, error 500, etc., etc.).
  • Crear redirecciones estáticas: la famosa Redirección 301. En este artículo podréis ver buenos ejemlos y el código a agregar a nuestro archivo .htaccess para crear esta útil redirección: Redirección 301 (webexperto.com).
  • Controlar la caché del sitio: acelera la carga de tu sitio y te ‘premian’ tanto los usuarios como los motores de búsqueda
  • Evitar hotlink o llamada remota de tu sitio: no permite que enlacen a imágenes y archivos de configuración, como hojas de estilo (archivos .css), javascripts (archivos .js)… Así evitarás sobrecargar con peticiones ajenas tu sitio, que se aprovechen del ‘tirón’. Muy útil también (yo lo utilizo en un determinado sitio, es decir, evito los hotlinks a ese dominio).
  • Forzar dominio sin las WWW. Es decir, que dará igual que escribas www.aprendiendophp.net que http://aprendiendophp.net, se cargará el mismo sitio gracias a la configuración del .htaccess.
    Un ejemplo con este dominio Aprendiendo PHP:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.aprendiendophp.net)(:80)? [NC]
RewriteRule ^(.*) http://aprendiendophp.net/$1 [R=301,L]
order deny,allow

Para finalizar esta introducción a .htaccess, os dejo algunos enlaces útiles e interesantes,  aunque mi intención es ir profundizando más en el tema. Poco a poco. Aquí van:

Tutorial de .htaccess de ‘En español’
El .htaccess ‘perfecto’ para tu WordPress, según ayudawordpress.com
Editor online de archivos .htaccess (webexperto.com)
Otro editor online de .htaccess (htaccesseditor.com)
.htaccess Files (tutorial de Apache, sitio en inglés)