Qué es y para qué sirve htaccess
Son cientos las consultas que recibimos todos los meses acerca de qué es htaccess y para qué sirve, así que creamos este artículo pensando en ti, donde te vamos a contar de qué se trata, veremos los principios básicos y algunos ejemplos prácticos para aplicarlo en tu sitio web. Si por el contrario eres de los más avanzados, esta guía también te servirá para refrescar algunos conceptos 🙂
¿Qué es htaccess?
El archivo htaccess (.htaccess) es un archivo de texto para configurar la forma en que tu servidor web responde a las peticiones de los usuarios. htaccess se convirtió en un estándar y es compatible con los servidores web más utilizados (Apache, Nginx, IIS).
Opera al nivel carpeta permitiendo anular o modificar ajustes de configuración global de tu servidor web, o asignar funciones o recursos a otras carpetas ubicadas en tu árbol de directorios en tu Hosting. Por ejemplo, si colocas una directiva en el htaccess de tu carpeta public, estas directivas serán heredadas hacia todos los directorios que están dentro, pero si ubicas una directiva dentro de una carpeta específica, solo de aplicará dentro de ella (y las subcarpetas que contenga dentro).
¿Por qué se llama htaccess? Cuenta la leyenda que deriva de las directivas del httpd.conf, archivo de configuración de directivas globales del servidor web, y al principio se utilizaba para controlar el acceso a usuarios por carpeta. Si bien htaccess aún se usa para esto, con el tiempo fue ganando terreno para aplicar miles de directivas como las que te mostraremos a lo largo de este artículo.
¿Dónde están ubicados los htaccess?
htaccess por lo general se ubica en la carpeta raíz de tu Hosting la cual contiene todo el contenido de tu sitio web, y generalmente está rotulada algo así como “public_html” o “www”. Ten en cuenta que dentro de un sitio web pueden convivir varios htaccess dispersados en las diferentes carpetas.
Si quieres averiguar cuántos archivos htaccess tienes en tu sitio web, puedes utilizar el buscador de archivos del Administrador de Archivos, ubicado en tu panel de control. En WNPower utilizamos cPanel, pero si estás usando otro servicio de Hosting donde el panel de control puede variar, encontrarás seguramente una herramienta similar.
¿Es público mi htaccess?
La respuesta rotunda es NO. Hasta ahora nombramos htaccess, pero su nombre real es .htaccess, y ese punto “.” al principio tiene como fin hacer que no sea visible o accesible por el público o cualquiera que haga una petición de tipo “https://tusitio.com/htaccess”. En la mayoría de los sistemas de archivos (file systems), los nombres que comienzan con un punto son archivos ocultos. Esto significa que regularmente no son visibles de forma predeterminada.
¿Qué ocurre si no lo tengo?
Lo normal es que este archivo esté creado por defecto al activar tu cuenta de Hosting y en el caso que no lo tengas el sistema lo creará automáticamente, por lo que normalmente tendrás uno en tu carpeta pública (public_html). Si revisaste y no tienes uno, puedes crearlo de esta manera:
- Crea un nuevo archivo en tu Administrador de Archivos del panel de control.
- Asegúrate de guárdarlo en formato ASCII (NO UTF-8).
- Nómbralo como “.htaccess” (no olvides el punto inicial).
Una vez que lo tengas, podrás escribir todas las directivas que desees editándolo. Recuerda que mientras no lo necesites, tampoco incidirá negativamente el hecho de no tenerlo.
¿Para que puedo usar htaccess?
Ahora que sabes para qué se utiliza, donde está ubicado e hicimos un repaso rápido, vayamos a ver algunas funciones prácticas. Pese a que son cientos, te vamos a dar una idea inicial de qué puedes hacer con él.
- Personalizar tus páginas de error (404, 403, 500, y más).
- Protección de carpetas con contraseña.
- Bloquear o habilitar el acceso a tu sitio desde determinadas direcciones IP.
- Especificar un archivo de index predeterminado para una o varias carpetas.
- Redireccionar o reescribir tus URL.
- Bloquear el linkeo de archivos desde otros sitios (Hotlink).
- Habilitar o deshabilitar el listado de contenidos de una carpeta.
- Configurar funciones de PHP.
Ten en cuenta que hoy por hoy gran parte de las directivas que te mostraremos son suministradas automáticamente si estás usando un CMS como WordPress, Joomla, y las que no, están a un clic de distancia en tu panel de control y entre las Herramientas Exclusivas que te ofrecemos en WNPower para que no debas echar mano al código. ¿Mencionamos que WNPower te ofrece el servicio de Hosting más completo? 🙂 ¡Revisa nuestro sitio comercial!
Antes de seguir, debes saber que htaccess es muy poderoso, y cualquier directiva mal ingresada o tipeada podría terminar en un Error 500 (Internal Server Error) haciendo que tu sitio web deje de funcionar o volverlo inseguro. Si eres de los valientes y lo estás editando a mano, nuestras recomendaciones son estas:
- Haz una copia de seguridad del archivo antes de empezar a editar.
- Ten especial cuidado al tipear tus directivas.
- Si estás copiando tus directivas desde un sitio web, asegúrate que lo que estás pegando tenga lógica.
- Ingresa una directiva a la vez y prueba el impacto antes de agregar la siguiente.
- Si te encuentras con un problema al ingresar una directiva, consulta a tu Soporte Técnico.
- Ten en cuenta que algunas directivas podrían pisarse con otras.
¡Vayamos a tocar un poco htaccess!
Personalizar tus páginas de error
Una de las funciones más simples de htaccess es especificar los documentos de error. Cuando se realiza una petición errónea como un 404 por un archivo no encontrado en tu sitio web, el servidor responde entregando un documento. Ese documento es personalizable para hacer que la experiencia para los usuarios sea más amena.
Los errores más comunes suelen ser 400 (petición incorrecta), 403 (acceso prohibido), 404 (archivo no encontrado), y los errores 500, tales como el error 500 (error interno del servidor), 502 (puerta de enlace no válida) o 503 (servicio no disponible). Para cada uno de ellos deberás crear primero un documento html y almacenarlo en tu Hosting. Si vas a personalizar una página de error para el 404, crea uno llamado 404.html.
Ahora solo edita tu htaccess ingresando línea por línea los errores que deseas personalizar. El formato en que lo debes escribir es ErrorDocument [espacio] número-de-error [espacio] ubicación.
ErrorDocument 400 /errores/400.html ErrorDocument 403 /errores/403.html ErrorDocument 404 /errores/404.html ErrorDocument 500 /errores/500.html
Protección de carpetas con contraseña
Solo te mostraremos cómo funciona. Nuestra recomendación es que si tienes que proteger un directorio en tu Hosting lo hagas desde tu panel de control ya que de esta manera está garantizado que el login generado sea encriptado y no esté libre por las carpetas de tu sitio web en forma de archivo de texto.
Generando un archivo llamado .htpasswd y escribiendo línea por línea esta sintaxis, “protegerás” tu directorio:
nombredeusuario:contraseña > Nombre-de-usuario [dos puntos] Contraseña
Ejemplo:
juanjose:t38Fd82$d5RD/3
¡De nuevo! Si buscas proteger un directorio, hazlo desde tu panel de control.
Bloquear o habilitar el acceso a tu sitio desde determinadas direcciones IP
Para bloquear direcciones IP específicas utiliza estas directivas indicando las direcciones IP que desees bloquear. El argumento “order” indica el órden de cómo actuará el bloqueo. En el siguiente ejemplo, veremos cómo bloquear una o varias IP específicas (podrás agregar tantas líneas como direcciones IP necesites).
order allow,deny deny from x.x.x.x allow from all
Si quieres bloquear un rango IP específico podrás especificar solo los primeros 3 octetos: x.x.x.
Por el contrario si deseas cerrar el tráfico de tu sitio web y habilitar solo el acceso a ciertas IP, utiliza estas directivas. Esto es muy útil si tienes que cerrar el tráfico a tu sitio web para realizar mantenimiento o tienes un sitio web en construcción:
order deny,allow deny from all allow from x.x.x.x allow from x.x.x.
Si vas por esta segunda alternativa, no olvides especificar tu dirección IP, porque de lo contrario no podrás acceder más a tu sitio hasta que la ingreses en un allow.
Especificar un archivo de index
Cuando realizas una petición a un sitio web para una URL que no tiene un nombre de archivo específico, el servidor irá a buscar un archivo de índice definido por defecto. Esto ocurre cuando ingresas a tu dominio https://tusitio.com o cuando intentas ingresar a una carpeta (como https://tusitio.com/carpeta).
El archivo predeterminado se llama index.html. Esto se remonta al principio de Internet cuando un sitio web era solo un conjunto de documentos, y la página de inicio era el índice.
Los archivos de index más comunes son index.html o index.php, pero si lo deseas podrás cambiarlo por algo diferente. No es casual pero tenemos muchos casos en los que utilizan main.html o home.html cuando se trata de sitios web un poco anticuados.
Forzaremos aquí el archivo de index a home.html agregando esta línea a htaccess:
DirectoryIndex home.html
Si deseas definir varios archivos de index, puedes definirlos en órden de prioridad:
DirectoryIndex home.php index.shtml main.html
Redireccionar URL con htaccess
Esto es sumamente útil si estás actualizando o reordenando los contenidos de tu sitio web en el caso de que tus URL hayan cambiado. Utilizaremos aquí el método 301 (redirección permanente), la cual ayudará a mantener el peso de una URL ante cualquier cambio.
Si por ejemplo deseas redireccionar una página hacia otra utiliza:
Redirect 301 /url-relativa/archivo.html https://example.com/full-url.html
Si deseas redireccionar un sitio web completo:
Redirect 301 / https://nuevo-dominio.com
Mucha gente sigue tipeando “www.” al ingresar a un sitio web. Si quieres forzar la redirección a que tu sitio ingrese sin www:
RewriteEngine on RewriteCond% ^ www.tu-dominio.com [NC] RewriteRule ^ (. *) $ Http://tu-dominio.com/$1 [R = 301, NC]
O si quieres forzar a que ingresen con www:
RewriteEngine On RewriteCond% ^ tu-dominio.com [NC RewriteRule ^ (. *) Http://www.tu-dominio.com/$1 [R = 301, NC]
Bloquear el linkeo de archivos desde otros sitios
¿Aborreces que otros sitios web inserten por URL tus imágenes o videos sin pasar antes por el tuyo? Sin duda esta práctica terminará por agotar tu tan preciado tráfico mensual o hacer sobreuso de él. Esto suele ocurrir cuando el webmaster de un website desea ahorrar tráfico de su plan de Hosting, o tan solo de peresozo.
Desde htaccess puedes detener esta práctica:
RewriteEngine on RewriteCond%! ^ $ RewriteCond%! ^ Http: // (www.)? tu-dominio.com /.*$ [NC] RewriteRule. (Gif | jpg | jpeg | png | js | css) $ - [F]
Desde luego esta funcionalidad está disponible en la mayoría de los paneles de control para gestionarlo desde una interfaz gráfica en lugar de editar a mano.
Habilitar o deshabilitar el listado de contenidos de una carpeta
Si bien es política de cada Hosting permitir o no listar los archivos de un directorio si este no tiene un archivo index, es posible configurarlo desde tu htaccess con tan solo agregar una línea.
Para permitir listar:
Options +Indexes
Si por el contrario, deseas denegar el listado de contenido de una carpeta:
Options -Indexes
Configurar funciones de PHP
Es frecuente que debas modificar o adaptar alguna función o variable de PHP para, por ejemplo, hacer funcionar un CMS. La forma correcta de hacerlo es en un archivo llamado php.ini el cual podrás agregar a la carpeta en tu Hosting.
Lo cierto es que no todas las empresas de Hosting permiten a sus clientes editar o subir su propio php.ini, y no queda otra que recurrir al htaccess. La sintaxis es esta: php_value [nombre del seteo] [valor]. Con un ejemplo:
php_value upload_max_filesize 10M
Si estás usando un Hosting en WNPower, te ofrecemos desde tu panel de control un selector de PHP con las últimas 5 versiones conocidas por el hombre, con posibilidad de habilitar y deshabilitar funciones, y realizar todos los cambios que necesites 🙂
Conclusión
htacces tiene poder ilimitado sobre tu sitio web y tiene que ser utilizado con cuidado. Si sigues las recomendaciones que te acabamos de dar podrás editar este archivo sin problema.
¿Tienes alguna experiencia editando tus htaccess? ¿Te parece algo complicado? Si tienes algo para compartir, por favor, ¡Comenta este artículo!