Una guía para principiantes de .htaccess para diseñadores y desarrolladores

Entre las diversas herramientas para personalizar su servidor web, el archivo de configuración .htaccess es una gran ventaja. Puede restablecer rápidamente tipos de documentos, motores de análisis, redireccionamientos de URLy muchas otras características cruciales.

Es posible que los diseñadores o desarrolladores que no sean muy técnicos no entren en los detalles de la administración de su propio archivo .htaccess. Pero el tema en sí es fascinante y vale la pena investigarlo.

Para este artículo, quiero presentar algunos conceptos más útiles para diseñadores y desarrolladores. cualquiera que sea lanzando su propio sitio web en un servidor Apache querrá saber cómo administrar su archivo .htaccess. Él proporciona mucha personalización y eso puede funcionar en casi cualquier lenguaje de programación web.

Al final de esta publicación, he agregado algunas aplicaciones web externas a ayudar a los recién llegados a generar sus archivos .htaccess dinámicamente.

¿Por qué usar un archivo .htaccess?

Esta es una gran pregunta y tal vez deberíamos comenzar respondiendo “¿Qué es un archivo .htaccess?“?

.htaccess es un archivo de configuración muy especial utilizado por el servidor web Apache. Pueden decirle al servidor web cómo presentar varias formas de información y cómo manejar varios encabezados de solicitud HTTP.

Realmente es un medio de descentralización para organizar la configuración del servidor web. Un servidor físico puede contener 50 sitios web diferentes, cada uno con su propio archivo .htaccess. Otorga mucho poder a los webmasters, que de otro modo sería imposible.

Pero, ¿por qué deberías usar uno?

La razón principal es la seguridad.

Puede bloquear ciertos directorios o protegerlos con contraseña. Esto es ideal para proyectos privados o nuevos CMS (Sistemas de gestión de contenido) donde desea un poco más de seguridad. Pero también hay tareas comunes como redirigir mensajes de error 404 a una determinada página web.

Esto solo toma una sola línea de código.y puede afectar drásticamente la forma en que los visitantes reaccionan a las páginas que faltan.

A decir verdad, no hay mucho que pueda decir para convencer a otros de que vale la pena entender un archivo .htaccess. Una vez que lo vea en acción, podrá reconocer todo el valor que proviene de este pequeño archivo de configuración.

Además, espero que el resto de este artículo pueda presentar algunos temas interesantes para traer a los webmasters a la luz de la gestión de una configuración .htaccess.

Permitir/denegar acceso

Es posible reconocer a los posibles visitantes no deseados y negarles el acceso a su sitio web. Esto puede ser un poco extremo. Sin embargo, si sabe que una persona o un grupo de personas se han dirigido a su sitio web, hay algunas opciones para elegir.

Puede elegir una referencia de dominio para denegar o prohibir visitantes por dirección IP.

order allow,deny
deny from 255.0.0.0
deny from 123.45.6.
allow from all

Observe que a la segunda dirección IP le falta el cuarto entero. Este bloque de código apuntará a la primera IP (255.0.0.0) y a todas las IP dentro del rango de 123.45.6.0-255, luego permita el resto del tráfico.

Evitar la inclusión en el directorio

Habrá ocasiones en las que tenga un directorio abierto que sea configurado para permitir la navegación por defecto. Esto significa que los usuarios pueden ver todos los archivos enumerados dentro de una estructura de directorio interna, como su carpeta de imágenes.

Algunos desarrolladores no quieren permitir la lista de directorios y, afortunadamente, el fragmento de código es bastante fácil de recordar.

Options -Indexes

He visto esta respuesta presentada innumerables veces en Stack Overflow y puede ser una de las reglas de .htaccess más fáciles de recordar.

Es posible en realidad crear múltiples archivos .htaccess dentro de cada uno de estos directorios, así que tal vez uno de ellos esté protegido con contraseña, pero los otros no. Y aún puedes quedarte con el Options -Indexes para que los visitantes no puedan navegar a través de su sitio web / imágenes / carpeta.

Protección de contraseña

Proteger sus directorios con contraseña es un procedimiento muy común para asegurar áreas de administración y otras carpetas cruciales para su sitio web. A veces, solo desea ofrecer acceso a un pequeño grupo de personas.

Otras veces, las contraseñas evitan que los piratas informáticos accedan al panel de administración de su sitio web. Pero de cualquier manera, es una solución muy poderosa para una gran cantidad de problemas.

Para hacerlo, podemos agregar la siguiente regla:

AuthType Basic
AuthName "This Area is Password Protected"
AuthUserFile /full/path/to/.htpasswd
Require valid-user

Tenga en cuenta que necesitamos proporcionar un archivo llamado .htpasswd. Este archivo debe contener el nombre de usuario y la contraseña codificada para permitir el acceso. Afortunadamente, simplemente puede usar una herramienta externa que le permita generarlo fácilmente.

Seguridad para WordPress

Para darle un buen uso a esta idea de protección con contraseña, mostremos un ejemplo del mundo real. Este fragmento de código más complicado forzar autenticación de usuario para cualquiera que acceda a WordPress’ wp-login.php archivo.

Encontrará la fuente original en Ask Apache, que tiene muchos otros fragmentos de protección de WordPress.

<Files wp-login.php>
Order Deny,Allow
Deny from All
Satisfy Any
AuthName "Protected By AskApache"
AuthUserFile /web/askapache.com/.htpasswda1
AuthType Basic
Require valid-user
</Files>

Y si va a seguir estas reglas de .htaccess, también podría ayudar a proteger con contraseña el área de administración. Típicamente el wp-login.php El archivo obtendrá la mayor cantidad de visitas de personas que intentan ingresar a su sistema por la fuerza bruta.

Entonces, incluso solo los códigos de muestra anteriores serían seguridad añadida más que suficiente para su sitio web de WordPress.

Reglas de reescritura de URL HTTP/HTTPS

La reescritura de URL es probablemente uno de los usos más comunes de los archivos .htaccess. Las instalaciones predeterminadas de WordPress en realidad pueden generar un archivo .htaccess directamente desde el panel de administración. Esto le permite crear direcciones URL bonitas que no tienen la .php?p=1 estructura.

Quiero ver este ejemplo de reescritura en cómo actualizar guiones bajos a guiones Desde que contiene muchos de los elementos más importantes.

RewriteEngine y RewriteBase casi siempre se puede establecer en estos valores exactos. Pero necesitas el RewriteEngine encendido para que todo lo demás funcione.

Hay muchas guías en línea que explican cómo habilitar mod_rewrite y su proveedor de alojamiento también puede ayudar.

Observe que la sintaxis sigue un patrón de RewriteRules en la cima. Estas reglas se utilizan para coincidencia con los casos que se envían como una solicitud HTTPS. Estas son respondidas por un RewriteRule que en este caso redirige todo al dominio d.com.

Los corchetes finales como [R=301,L] se llaman banderas de reescritura que son importantes, pero más un tema avanzado.

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
 
RewriteRule !.(html|php)$ - [S=4]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]
 
RewriteCond %{ENV:uscor} ^Yes$
RewriteRule (.*) https://d.com/$1 [R=301,L]

El mod_rewrite La sintaxis definitivamente es un poco confusa, ¡pero no se deje intimidar! Los fragmentos pueden verse mucho más fáciles en otros ejemplos.

Cuando recién estoy comenzando, debo recomendar esta aplicación web mod_rewrite que lo ayuda a generar ejemplos de código usando URL reales.

Esta es una herramienta brillante porque puede buscar varios elementos en la sintaxis para ver qué hacen realmente en las reglas de reescritura.

Pero no intentes sobrecargarte con todo esto a la vez. Me tomó más de 3 o 4 meses comenzar realmente a entender cómo reescribir las URL con [0-9a-zA-Z]+ y patrones similares. Sigue practicando y, con el tiempo, te prometo que entenderás estas cosas como si fueran conocimientos de sentido común.

Fragmentos de código para desarrolladores

Me encantan los fragmentos fáciles de usar y quiero reunir esta pequeña colección de códigos .htaccess pertinentes para desarrolladores.

Cada una de estas ideas puede encajar muy bien en su propio archivo .htaccess junto con otros bloques de código. La mayoría de estos fragmentos son excelentes para resolver problemas rápidos o arreglos en su entorno de servidor web.

Imagine la configuración de Apache perfecta para los nuevos webmasters que recién comienzan en línea.

Configuración DirectoryIndex

Puede decirle a Apache qué documentos deben tratarse inicialmente como el documento «principal» con DirectoryIndex. Por lo general, le gustaría apuntar a un indexarchivos con nombre como index.html e index.php.

DirectoryIndex index.html index.php

El orden de los documentos debe comenzar con el más importante y moverse a través de las filas hasta el menos importante. En el ejemplo anterior, si no tenemos un HTML, entonces el respaldo irá a índice.php. E incluso podría nombrar estos archivos casa.php o otroarchivo.php y es toda sintaxis válida.

Forzar subdominio «www» o «no-www»

Google puede trabajar con ambas versiones del dominio de su sitio web si no lo especifica www.dominio.com o solo dominio.com. En mi experiencia, la mejor práctica es elija uno de estos y configúrelo como el único elección a través de .htaccess.

Entonces, Google no indexará varias URL, algunas apuntarán al subdominio WWW mientras que otras no.

# Force WWW Subdomain
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1 [L,R=301]

# No Subdomain
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ https://domain.com/$1 [L,R=301]

Este fragmento de código proviene de un archivo CSS-Tricks y proporciona una solución muy útil.

Debe actualizar el dominio para que sea lo que necesite para su propio sitio web. De lo contrario, habrá problemas, ¡y lo notará de inmediato! Pero apoyo firmemente forzar una de estas dos opciones y está en la parte superior de mi lista de tareas después de lanzar un nuevo sitio web.

Forzar descargas de archivos multimedia

Otro fragmento bastante importante permite obligar a ciertos tipos de medios a descargar en lugar de mostrarse en el navegador.

Inmediatamente, puedo pensar en documentos PDF y archivos de audio MP3 que pueden presentarse en un formato descargable, pero así es como puede forzarlos descargar?

AddType application/octet-stream .zip .mp3 .mp4

Siéntase libre de incluir aún más tipos de archivos al final de esta línea. Todos los formatos de medios que utilicen el tipo MIME de secuencia de octetos se podrán descargar. Forzar esto a través de .htaccess es una ruta muy directa para garantizar que las personas no puedan ver estos archivos en el navegador.

Documentos de error personalizados

Una última pieza final que quiero agregar es una plantilla completa de documentos de error personalizados. Por lo general, estos códigos numéricos solo se ven en el extremo del servidor. Pero hay muchos de estos documentos de error con los que debería estar familiarizado.

Algunos ejemplos podrían ser 403/404 errores y el redirección 301.

Esta plantilla de código de error comienza en 100 y se mueve hacia arriba en 500 errores. Tenga en cuenta que obviamente no necesita todos estos. Solo serían necesarios los errores más comunes y, posiblemente, algunos fragmentos oscuros si siente la necesidad.

Si no reconoce un código, búsquelo en Wikipedia para comprenderlo mejor.

ErrorDocument 100 /100_CONTINUE
ErrorDocument 101 /101_SWITCHING_PROTOCOLS
ErrorDocument 102 /102_PROCESSING
ErrorDocument 200 /200_OK
ErrorDocument 201 /201_CREATED
ErrorDocument 202 /202_ACCEPTED
ErrorDocument 203 /203_NON_AUTHORITATIVE
ErrorDocument 204 /204_NO_CONTENT
ErrorDocument 205 /205_RESET_CONTENT
ErrorDocument 206 /206_PARTIAL_CONTENT
ErrorDocument 207 /207_MULTI_STATUS
ErrorDocument 300 /300_MULTIPLE_CHOICES
ErrorDocument 301 /301_MOVED_PERMANENTLY
ErrorDocument 302 /302_MOVED_TEMPORARILY
ErrorDocument 303 /303_SEE_OTHER
ErrorDocument 304 /304_NOT_MODIFIED
ErrorDocument 305 /305_USE_PROXY
ErrorDocument 307 /307_TEMPORARY_REDIRECT
ErrorDocument 400 /400_BAD_REQUEST
ErrorDocument 401 /401_UNAUTHORIZED
ErrorDocument 402 /402_PAYMENT_REQUIRED
ErrorDocument 403 /403_FORBIDDEN
ErrorDocument 404 /404_NOT_FOUND
 
ErrorDocument 405 /405_METHOD_NOT_ALLOWED
ErrorDocument 406 /406_NOT_ACCEPTABLE
ErrorDocument 407 /407_PROXY_AUTHENTICATION_REQUIRED
ErrorDocument 408 /408_REQUEST_TIME_OUT
ErrorDocument 409 /409_CONFLICT
ErrorDocument 410 /410_GONE
ErrorDocument 411 /411_LENGTH_REQUIRED
ErrorDocument 412 /412_PRECONDITION_FAILED
ErrorDocument 413 /413_REQUEST_ENTITY_TOO_LARGE
ErrorDocument 414 /414_REQUEST_URI_TOO_LARGE
ErrorDocument 415 /415_UNSUPPORTED_MEDIA_TYPE
ErrorDocument 416 /416_RANGE_NOT_SATISFIABLE
ErrorDocument 417 /417_EXPECTATION_FAILED
ErrorDocument 422 /422_UNPROCESSABLE_ENTITY
ErrorDocument 423 /423_LOCKED
ErrorDocument 424 /424_FAILED_DEPENDENCY
ErrorDocument 426 /426_UPGRADE_REQUIRED
ErrorDocument 500 /500_INTERNAL_SERVER_ERROR
ErrorDocument 501 /501_NOT_IMPLEMENTED
ErrorDocument 502 /502_BAD_GATEWAY
ErrorDocument 503 /503_SERVICE_UNAVAILABLE
ErrorDocument 504 /504_GATEWAY_TIME_OUT
ErrorDocument 505 /505_VERSION_NOT_SUPPORTED
ErrorDocument 506 /506_VARIANT_ALSO_VARIES
ErrorDocument 507 /507_INSUFFICIENT_STORAGE
ErrorDocument 510 /510_NOT_EXTENDED
Aplicaciones web .htaccess en línea
  • Constructor de Htaccess
  • Generador de redirección .htaccess
  • .htaccessEditor: crea un archivo .htaccess
  • Generador de reescritura de mods por GenerateIt.net
Otros recursos útiles
  • .htaccess en Httpd Wiki
  • Documentación oficial de Apache htaccess
  • Pregunte a Apache Blog – Htaccess Archives
  • Todo lo que siempre quiso saber sobre las reglas de Mod_Rewrite pero no se atrevió a preguntar

Pensamientos finales

Hay tantos innumerables recursos en línea que discuten archivos .htaccess. Mis artículos vinculados y aplicaciones web son un excelente lugar para comenzar. Pero siga practicando nuevas ideas y no tenga miedo de probando fragmentos de código. Mientras tienes un archivo de respaldo entonces puedes probar lo que quieras y es una experiencia de aprendizaje divertida.

Si tiene otras ideas o sugerencias sobre la administración de .htaccess, compártalas con nosotros en el área de discusión posterior a continuación.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio