Una guía para principiantes de .htaccess para diseñadores y desarrolladores
Entre las muchas herramientas diferentes para personalizar su servidor web, el archivo de configuración .htaccess es un activo tremendo. Usted puede Restablecer rápidamente los tipos de documentos, motores de análisis, redirecciones de URL, y muchas otras características cruciales. Los webmasters que no son muy técnicos pueden no entrar en los detalles específicos de la administración de su propio archivo .htaccess. Pero el tema en sí es fascinante y vale la pena investigar.
Para este artículo, quiero presentar algunos de los conceptos más específicos para los webmasters y los desarrolladores web. Cualquiera que sea Lanzamiento de su propio sitio web en un servidor Apache. Definitivamente querrá entender cómo administrar su archivo .htaccess. Eso proporciona tanta personalización y eso Puede trabajar en cualquier idioma web. de PHP a Ruby.
En la parte inferior 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 por responder “¿Qué es un archivo .htaccess?”? Es un archivo de configuración muy especial utilizado por el servidor web Apache. Un archivo .htaccess puede 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ían imposibles. Pero ¿por qué debería usar uno?
La razón más grande es la seguridad. Usted puede bloquear ciertos directorios o hacerlos protegidos por contraseña. Esto es ideal para proyectos privados o nuevos sistemas de administración de contenido donde desea un poco más de seguridad. Pero también hay tareas comunes como redirigir los mensajes de error 404 a una página web determinada. Esto solo requiere una sola línea de código. y puede impactar dramáticamente cómo los visitantes reaccionan a las páginas que faltan.
Sinceramente, no hay mucho que pueda decir para convencer a los demás de que vale la pena entender un archivo .htaccess. Una vez que lo veas en acción, puedes reconocer todo el valor que proviene de este pequeño archivo de configuración. También espero que el resto de este artículo pueda presentar algunos temas interesantes para llevar a los webmasters a la luz de la administración de una configuración .htaccess.
Permitir / Denegar Acceso
Es posible reconocer posibles visitantes de spam y negarles el acceso a su sitio web. Esto puede ser un poco extremo, sin embargo, si sabe que una persona o grupo de personas ha estado apuntando a su sitio web, hay algunas opciones para elegir. Puede elegir una referencia de dominio para negar o prohibir a los visitantes con una dirección IP.
orden permitir, negar negar desde 255.0.0.0 negar desde 123.45.6. permitir de todo
Estos códigos de muestra se copiaron de la Guía de Htaccess ya que son la plantilla perfecta para comenzar. 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 cada IP dentro del rango de 123.45.6.0-255, luego permitir todo el resto del tráfico. Los webmasters no pueden usar esto con tanta frecuencia como otras técnicas, pero es útil entenderlo..
Prevenir listado de directorio
Habrá ocasiones en las que tenga un directorio abierto que es configurado para permitir la navegación por defecto. Esto significa que los usuarios pueden ver todos los archivos enumerados dentro de una estructura de directorios interna, como su carpeta de imágenes. Algunos webmasters no quieren permitir el listado de directorios y, afortunadamente, el fragmento de código es bastante fácil de recordar.
Opciones -Indexes
He visto esta respuesta presentada innumerables veces a lo largo de Stack Overflow y puede ser una de las reglas más fáciles de recordar .htaccess para recordar.
Es posible en realidad Crea múltiples archivos .htaccess dentro de cada uno de estos directorios. así que tal vez uno de ellos está protegido por contraseña pero los otros no. Y todavía puedes mantener el Opciones -Indexes para que los visitantes no puedan navegar a través de su sitio web / imágenes / carpeta.
Protección de contraseña
Proteger con contraseña sus directorios es un procedimiento muy común para Asegurar áreas de administración y otras carpetas cruciales para su sitio web. Algunas veces solo querrá ofrecer acceso a un pequeño grupo de personas. Otras veces, las contraseñas son para evitar que los piratas informáticos obtengan acceso 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..
Hay una guía práctica sobre protección con contraseña que describe los fragmentos de código importantes. Necesitaras generar un archivo de contraseña que almacene las credenciales de nombre de usuario / contraseña. Así es como Apache puede comparar con lo que el usuario ingresa para ver si se le debe otorgar acceso. Y observe cómo necesitará generar una muestra para su nombre de usuario y contraseña.
Recomendaría usar este generador de htpassword para que pueda ahorrar un poco de tiempo. La sintaxis siempre saldrá perfecta y usted no necesita cifrar la contraseña usted mismo. Y la otra gran opción es proteger con contraseña una lista completa de directorios. Podemos ver este ejemplo en la galería de fragmentos de código CSS-Tricks..
AuthType Basic AuthName "Esta área está protegida por contraseña" AuthUserFile /full/path/to/.htpasswd Requerir usuario válido
Seguridad para WordPress
Para hacer un buen uso de esta idea de protección con contraseña, vamos a mostrar un ejemplo del mundo real. Este fragmento de código más complicado será forzar la autenticación de usuario para cualquier persona que acceda al archivo wp-login.php de WordPress. Encontrará la fuente original en Ask Apache, que tiene muchos otros fragmentos de protección de WordPress.
Solicitar Denegar, Permitir Denegar de Todos Satisfaga Cualquier Nombre de Autor "Protegido por AskApache" AuthUserFile /web/askapache.com/.htpasswda1 AuthType Basic Require valid-user
Y si va a seguir estas reglas .htaccess, también podría ayudar a proteger con contraseña el área de administración. Tipicamente el wp-login.php El archivo obtendrá la mayor cantidad de aciertos de las personas que intentan atacar con fuerza bruta en su sistema. Así que incluso solo los códigos de ejemplo de arriba serían más que suficiente seguridad añadida para su sitio web de WordPress.
Reglas de reescritura de URL de HTTP
Reescribir URL es probablemente uno de los usos más comunes de los archivos .htaccess. Las instalaciones por defecto de WordPress pueden realmente generar un archivo .htaccess directamente desde el panel de administración. Esto le permite crear URL bonitas que no tienen la estructura .php? P = 1.
Quiero ver este ejemplo de reescritura en cómo actualizar guiones bajos a guiones Desde que Contiene muchos de los elementos más importantes..
Opciones + 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- 1- $ 2- $ 3 [E = uscor: Sí] RewriteRule ^ ([^ _] *) _ (. *) $ $ 1- $ 2 [E = uscor: Yes] RewriteCond% ENV: uscor ^ Sí $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
RewriteEngine y RewriteBase La mayoría de las veces se puede establecer en estos valores exactos. Pero necesita que el RewriteEngine esté activado para que cualquier otra cosa funcione. Hay muchas guías en línea que explican cómo habilitar mod_rewrite y su proveedor de alojamiento también puede ayudar.
Note que la sintaxis sigue un patrón de RewriteRules en la cima. Estas reglas se utilizan para coincide con los casos que se envían como una solicitud HTTP. Estos son respondidos por una RewriteRule que en este caso redirige todo al dominio. d.com. Los corchetes finales como [R = 301, L] se denominan indicadores de reescritura que son importantes, pero más de un tema avanzado.
La sintaxis mod_rewrite es definitivamente un poco confusa, ¡pero no te dejes intimidar! Los fragmentos pueden parecer mucho más fáciles en otros ejemplos..
Cuando acabo de comenzar, tengo que recomendar esta aplicación web mod_rewrite que te 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 lo que realmente hacen en las reglas de Reescritura. Aquí hay otro gran tutorial con un ejemplo más simple para estudiar:
RewriteRule ^ dir / ([0-9] +) /? $ /Index.php?id=$1 [L]
No intente sobrecargarse con estos a la vez. Me tomó más de 3 a 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 obtendrás estas cosas como si fueran conocimientos de sentido común.
Fragmentos de código para webmasters
Me encantan los fragmentos de código fáciles de usar y quiero armar esta pequeña colección de códigos .htaccess pertinentes para los webmasters. Cada una de estas ideas puede encajar perfectamente en su propio archivo .htaccess junto con otros bloques de código. La mayoría de estos fragmentos son excelentes para Resolver problemas o soluciones rápidas en su entorno de servidor web.. Imagina la configuración perfecta de Apache para los nuevos webmasters recién iniciados en línea.
Configuración de DirectoryIndex
El comando para DirectoryIndex se usa comúnmente en una sola línea. Puede decirle a Apache qué documentos deben tratarse inicialmente como “principal” documento. Por defecto esto elementos de destino como index.html, index.php, index.asp y otros archivos de índice. Pero al usar este fragmento de código que he copiado a continuación, tiene la capacidad de hacer que este documento raíz sea lo que quiera.
DirectoryIndex index.html index.cgi index.php
El orden de los documentos debe comenzar con los más importantes y moverse a través de los rangos hasta los menos importantes. Por lo tanto, si no tenemos un archivo HTML o CGI, el respaldo irá a index.php. E incluso podrías nombrar estos archivos. home.php o someotherfile.php y toda la sintaxis es válida.
Fuerza WWW o subdominio no WWW
Google puede trabajar con ambas versiones del dominio de su sitio web si no especifica www.dominio.com o solo dominio.com. En mi experiencia, es una buena práctica Elige uno de estos y configúralo como la única opción. a través de .htaccess. Entonces Google no indexará varias URL; algunas apuntan al subdominio WWW mientras que otras no lo hacen.
# Forzar WWW Subdominio RewriteEngine On RewriteCond% HTTP_HOST ^ domain.com [NC] RewriteRule ^ (. *) $ Http://www.domain.com/$1 [L, R = 301] # No hay subdominio RewriteEngine On RewriteCond% HTTP_HOST! ^ Domain.com $ [NC] RewriteRule ^ (. *) $ Http://domain.com/$1 [L, R = 301]
Este fragmento de código proviene de un archivo de trucos CSS 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 te darás cuenta de inmediato! Pero realmente apoyo el hecho de 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 de medios
Otro fragmento bastante importante permite forzar 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 ¿cómo lo hace? Asegúrate de que sean descargables? Encontré un artículo similar publicado en la Guía de Htaccess que describe este fragmento de código.
Aplicación AddType / octet-stream .zip .mp3 .mp4
Siéntase libre de incluir incluso más tipos de archivos al final de esta línea. Todos los formatos de medios que utilizan el tipo MIME de flujo octeto serán descargables. 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ías estar familiarizado. Algunos ejemplos pueden ser 403/404 errores y el Redireccionamiento 301.
Esta plantilla de código de error comienza a los 100 y se mueve hacia arriba en 500 errores. Tenga en cuenta que, obviamente, no necesita todos estos. Solo los errores más comunes serían necesarios, 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
Online .htaccess Webapps
- Constructor de Htaccess
- .generador de redireccionamiento htaccess
- .htaccessEditor - Crea un archivo .htaccess
- Mod Rewrite Generator por GenerateIt.net
Otros recursos útiles
- .htaccess en httpd wiki
- Documentación oficial de Apache htaccess
- Ask Apache Blog - Archivos de Htaccess
- Guía definitiva de htaccess y mod_rewrite
- Todo lo que siempre quiso saber sobre las reglas de Mod_Rewrite, pero tenía miedo de preguntar
Pensamientos finales
Hay tantos recursos en línea que discuten archivos .htaccess. Mis artículos vinculados y aplicaciones web son un excelente lugar para comenzar. Pero sigue practicando nuevas ideas y no tengas miedo de probando fragmentos de código. Mientras tienes un archivo de copia de seguridad 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..