5 soluciones divertidas y prácticas de Htaccess

Hoy repasaremos algunos usos prácticos de los archivos htaccess que puede utilizar en sus aplicaciones web..

Requerimientos

Los archivos Htaccess son archivos de configuración de texto sin formato utilizados por el servidor web HTTP Apache. Permiten a los usuarios establecer opciones de nivel de directorio sin requerir acceso a la httpd.conf expediente. Como tal, se requiere que su servidor use Apache y un servidor web que permita htaccess archivos (los anfitriones más populares hacen).

Asumo un conocimiento básico de htaccess, pero si necesita refrescarse, lea este artículo de Joseph Pecoraro

1. Prevenir Hotlinking

Hotlinking, o enlace en línea, es cuando un sitio web se vincula directamente con un objeto en otro sitio. Esto le cuesta al ancho de banda del sitio de alojamiento proporcionar la imagen en la página del segundo sitio. En los sitios de fotos populares, esto puede ser un gran problema, aunque a veces sea humorístico..



http://www.shapelessmass.com

Hay maneras de solucionar este problema creciente utilizando htaccess. Primero aquí está la imagen que estamos tratando de proteger..

 RewriteEngine en RewriteCond% HTTP_REFERER! ^ $ #Domains que puede vincular a las imágenes #add tantas como desee RewriteCond% HTTP_REFERER! ^ Http (s)?: // (www \.)? Demo.collegeaintcheap.com [NC] # RewriteCond% HTTP_REFERER! ^ Http (s)?: // (www \.)? Noahhendrix.com [NC] # no muestra ninguna imagen cuando se encuentra un enlace RewriteRule \. (Jpg | png | gif) $ - [ NC, F, L]

Pasaremos por esta línea por línea..

  1. Primero necesitamos encender el motor de reescritura en Apache, esto nos permite redirigir la solicitud del usuario.
  2. A continuación comenzamos a establecer nuestras condiciones utilizando RewriteCond. Esta es una función que toma dos argumentos: TestString y CondPattern. TestString es la cadena con la que queremos verificar nuestro CondPattern (usando expresiones regulares). $ HTTP_REFERER es una variable proporcionada por Apache que contiene el dominio del que proviene la solicitud, en este caso queremos permitir que las solicitudes de los remitentes HTTP en blanco protejan a los usuarios que se encuentran en un servidor proxy que envía referencias en blanco.
  3. A continuación, configuramos los dominios desde los cuales permitiremos que nuestras imágenes se vinculen utilizando la misma sintaxis, excepto que ahora proporcionamos una URL. los [CAROLINA DEL NORTE] La bandera al final del comando simplemente indica al motor que ignore la carcasa. Puedes agregar tantos dominios de líneas como quieras aquí, usando la misma sintaxis. Por ejemplo, agregué mi dominio personal, pero lo comenté.
  4. Finalmente, la última línea es la RewriteRule que deseamos utilizar si no se cumple alguna de las condiciones anteriores. Se necesitan dos argumentos también Modelo y Sustitución, donde patrón es una coincidencia de expresión regular y la sustitución es con lo que queremos reemplazar cualquier coincidencia. En este caso, estamos buscando solicitudes que terminen en jpg, png y gif; Si lo encontramos queremos usar una sustitución en blanco. Sin embargo en las banderas le decimos además lo que queremos hacer., CAROLINA DEL NORTE significa ningún caso, F envía un error prohibido 403 al usuario, y L le dice al motor que deje de reescribir para que no se apliquen otras reglas.

Esto es bastante sencillo, pero quizás estemos interesados ​​en decirle al usuario que no queremos que vinculen nuestras imágenes, así que redirigamos todas las solicitudes vinculadas a una imagen en lugar de enviar un error 403 prohibido. Esto se hace reemplazando la última línea con este código.

 #muestra una imagen alternativa RewriteRule \. (jpg | png | gif) $ http://demo.collegeaintcheap.com/envato/htaccess/hotlink/images/hotlink.jpeg [NC, R, L]

Puede cambiar la URL a cualquier ruta de imagen que desee en su dominio, pero recuerde que no debe terminar en jpg, png o gif, ya que volverá a aplicar la regla y enviará al servidor a un bucle sin fin. Elegí usar la extensión .jpeg más antigua para solucionar este problema. los R bandera que reemplazó F simplemente envía una redirección.

2. Bloquear usuario por dirección IP

Este es un gran consejo si tienes un spammer en tu sitio web. Si puede encontrar su IP en sus registros, simplemente agréguela a un archivo htaccess.

 Denegar orden, Permitir denegar desde 24.121.202.23 # Denegar desde 0.0.0.0

Usando la directiva Order en el módulo mod_access podemos especificar direcciones IP para negar y permitir. Simplemente usando la sintaxis Denegar de la dirección IP Podemos prohibir a esos usuarios acceder a nuestro directorio..

3. Documentos de error

Todos los sitios preparados para la producción deben usar páginas de error personalizadas para un toque profesional. Esto es fácil usando la directiva ErrorDocument en el núcleo de Apache. Una página personalizada es mucho mejor que las páginas de error de Apache predeterminadas.

 ErrorDocument 404 http://demo.collegeaintcheap.com/envato/htaccess/errors/404.html ErrorDocument 403 http://demo.collegeaintcheap.com/envato/htaccess/errors/403.html ErrorDocument 500 http: // demo. collegeaintcheap.com/envato/htaccess/errors/500.html

ErrorDocument toma dos argumentos código de error y documento. En el código anterior, creé documentos de error para los 3 errores HTTP más comunes: 404 no encontrados, 403 prohibidos y 500 errores de servidor. Luego, puede proporcionar la URL completa o la ruta relativa a sus documentos de error. También podría redirigirlos a un script PHP que registre los errores en una base de datos o enviarlos por correo electrónico (aunque podría ser molesto). Esta es una excelente manera de tomar control de los errores en su aplicación web. Asegúrese de visitar el escaparate 404 de Smashing Magazine para inspirarse..

4. Redirigir mientras se realizan actualizaciones

Si está realizando una actualización importante del sitio, lo más probable es que deba redirigir a los usuarios a una página que les informe. Esto evita que los usuarios vean páginas rotas o posibles agujeros de seguridad mientras se carga la aplicación. Una advertencia a tener en cuenta es que queremos permitir que ciertas direcciones IP entren en el sitio antes de su puesta en marcha, todo esto se puede lograr en un archivo htaccess.

 RewriteEngine en RewriteCond% REQUEST_URI! /Upgrade.html$ RewriteCond% REMOTE_HOST! ^ 24 \ .121 \ .202 \ .30 RewriteRule $ http://demo.collegeaintcheap.com/envato/htaccess/upgrade/upgrade. html [R = 302, L]

Estamos utilizando el motor de reescritura de nuevo para hacer esto, pero de una manera inversa. Primero debemos establecer una condición que excluya el documento que describe la actualización; de lo contrario, nuestro servidor iniciará un ciclo sin fin. A continuación, excluimos que una sola dirección IP sea redirigida para propósitos de prueba. Finalmente, usamos la regla de reescritura para enviar a los usuarios a una página de actualización. Los indicadores que hemos visto antes, excepto que esta vez configuramos la redirección a un código de estado 302, le informamos al navegador que la página se ha movido temporalmente y que manejen el almacenamiento en caché en consecuencia. Smashing Magazine, una vez más, tiene un gran escaparate de páginas de mantenimiento efectivo.

5. Ocultar listado de directorio

Por numerosos motivos de seguridad, es una buena idea restringir la lista de directorios, el comportamiento predeterminado en Apache. Esto se puede hacer con una línea simple en nuestro archivo htaccess. Podemos evitar que los visitantes vean nuestros listados de directorios..

 Opciones -Indexes

Ahora los usuarios que solicitan un directorio que no tiene un archivo de índice, les mostrará una página de error 403 prohibido..

Conclusión

Estos son algunos de mis usos favoritos de htaccess. Deja el tuyo en los comentarios! Estoy disponible para ayudar en los comentarios o en twitter. Si hay mucho interés, haré más tutoriales de htaccess con soluciones a sus solicitudes en los comentarios. Gracias por leer!

  • Síganos en Twitter o suscríbase a la Fuente RSS de NETTUTS para obtener más artículos y artículos de desarrollo web diarios.