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]
Si desea profundizar un poco más, puede encontrar una larga lista de banderas en esta página web de hoja de trucos.
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 index
archivos 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.