¿Estás tratando con el archivo.htaccess y no sabes exactamente qué hacer?
Entonces sepa que en esta guía intentaremos describir todas las características del archivo desde lo básico hasta los casos más complejos. Y es por eso que creamos un único artículo que intentaba entenderlo todo.
.htaccess: lo básico
¿Qué es el archivo.htaccess?
Muy bien, aquí vamos. El archivo.htaccess es un archivo de configuración que gestiona las respuestas que el servidor web proporciona en situaciones específicas. En realidad, hay diferentes servidores web que utilizan este archivo de configuración, como uno de los más famosos que corresponde al nombre de Apache.
El archivo.htaccess opera a nivel del directorio en el que se encuentra, lo que le permite ignorar las configuraciones generales establecidas por otros archivos.htaccess ubicados en directorios anteriores.
Por ejemplo, las instrucciones contenidas en el archivo.htaccess en el directorio domain name.com/administration tendrán prioridad sobre las instrucciones contenidas en el archivo.htaccess en la dirección domain name.com.
¿Por qué se llama .htaccess?
Este tipo de archivo se utilizaba para controlar el acceso de usuarios específicos dentro de ciertos directorios en los servidores.
De este modo, el administrador del sistema pudo prohibir el acceso a los usuarios que no tenían los privilegios adecuados. Y para hacer esto, el nombre de usuario y la contraseña se insertaron en un archivo llamado .htpasswd.
Aunque el archivo.htaccess todavía se usa para este propósito, su uso se ha expandido enormemente. Muchos de los casos con los que puede tener que lidiar se describen en esta guía.
¿Dónde está el archivo.htaccess?
Como se mencionó antes, el archivo.htaccess es un poco especial y por lo tanto se puede encontrar en cualquier directorio. Dicho esto, el archivo suele estar ubicado en el directorio donde se encuentran los archivos del sitio web. Estos directorios pueden cambiar el nombre de configuración a configuración. Los nombres más comunes son www, httpdocs o public_html.
¿Por qué no puedo encontrar el archivo.htaccess?
En realidad, puede que no lo veas. De hecho, los archivos que empiezan por el punto (como .htaccess) no suelen ser visibles por defecto. Por lo tanto, estamos hablando de lo que se consideran archivos ocultos. Si accede a su directorio con un programa de correo normal, como FileZilla, intente buscar la opción «mostrar archivos ocultos».
De esta manera puede ver su archivo.htaccess.
En caso de que haya entrado en su directorio a través de ssh en su lugar, entonces el comando para ver sólo los archivos ocultos es:
ls -ld ……………………………………………………………………………………………………………………………………………..
¿Qué pasa si el archivo.htaccess no está ahí?
Por lo general, este archivo se genera automáticamente, así que asegúrese de que ha intentado todo lo que puede hacer para localizarlo.
Si no está ahí, puede crear uno usando un programa de texto normal (archivo para ser guardado en formato ASCII) asegurándose de que no lo guarde en formato.txt. El nombre del archivo debería ser simplemente .htaccess
Tratamiento de errores
Cuando un servidor recibe una petición externa, el propio servidor intenta responder. Este es el caso, por ejemplo, cuando alguien intenta ver una página html específica, o quiere ver un video o eventualmente descargar un archivo pdf.
Como ya se ha mencionado, el servidor intenta responder a esta petición para satisfacerla. Sin embargo, las cosas no son tan simples y obvias. Sucede a veces que la página html, el vídeo o el documento pdf no existen. Así se genera un error, y cada error específico tiene su propio código específico.
El error 404 es, por ejemplo, el error generado cuando un documento solicitado al servidor no se encuentra realmente. Pero hay muchos más errores:
Error de solicitud de cliente
- 400 – Mala solicitud
- 401 – Se requiere autorización
- 402 – Pago requerido (aún no utilizado)
- 403 – Prohibido
- 404 – No encontrado
- 405 – Método no permitido
- 406 – No aceptable (codificación)
- 407 – Se requiere autenticación de proxy
- 408 – Solicitud de tiempo de espera
- 409 – Petición conflictiva
- 410 – Desaparecido
- 411 – Longitud del contenido requerida
- 412 – Precondición fallida
- 413 – Solicitar entidad demasiado tiempo
- 414 – Solicitar URI demasiado tiempo
- 415 – Tipo de medio no admitido.
Error del servidor
- 500 – Error interno del servidor
- 501 – No aplicadas
- 502 – Puerta de enlace defectuosa
- 503 – Servicio no disponible
- 504 – Tiempo de espera del Gateway
- 505 – Versión HTTP no soportada.
¿A qué se accede normalmente?
¿Alguna vez ha visitado un sitio y ha visto que su navegador indica un error genérico? Aquí, esto es lo que sucede cuando no se especifica cómo manejar los errores del servidor. ¡Y eso no es bueno!
Cómo especificar errores
Lo ideal es que cree un documento HTML para cada código de error que desee manejar. El nombre del archivo no es importante, puedes llamarlo como quieras, pero trata de encontrar una manera que sea fácil de recordar.
Una vez que haya hecho este primer paso, hay un segundo que completar.
Debe asociar el código de error con el archivo html creado en el documento. ErrorDocument 400 /errori/bad-request.html ErrorDocument 412 /errors/precondition-failed.html ErrorDocument 403 /errori/forbid.html ErrorDocument 404 /errori/not-found.html ErrorDocument 505 /errors//http-version-not-supported.html
Y así sucesivamente……
Alternativa a la gestión de errores
Hay muchas aplicaciones disponibles en Internet, como los CMS, que tienen su propia forma de preocuparse por los errores. Y por un lado esto puede ser una ventaja.
Protección de contraseña con .htaccess
Ahora veamos en detalle cómo proteger contraseñas específicas con este archivo de configuración. Que fue también la razón original por la que nació el archivo.htaccess
.htpasswd
Este archivo almacena la contraseña y el nombre de usuario. Estos valores se almacenan de la siguiente manera
nombre de usuario:passwordcripted
por ejemplo
mariorossi:Hd635dhY684jd
La contraseña que ves, por lo tanto, no es la contraseña real. Pero es una contraseña encriptada.
El sistema verificará que la contraseña introducida por el usuario es la misma que la contraseña introducida en el archivo.htpasswd. Si es así, el usuario podrá acceder al directorio de destino, de lo contrario tendrá que volver a introducir la contraseña.
Almacenar las contraseñas de esta manera hace que el sistema sea más seguro. De hecho, si alguien tenía acceso directo a ese archivo, no podía rastrear las contraseñas reales porque estaban encriptadas. Es una «encriptación unidireccional» que le impide hacer el camino inverso para obtener contraseñas claras.
Bloquear (o desbloquear) una dirección IP
Si desea bloquear usuarios de IPs específicas, puede configurar el archivo.htaccess correctamente. Esta estrategia puede ser útil si necesita bloquear a algunos usuarios que están causando problemas. Pero es cierto que se puede hacer lo contrario, es decir, sólo se puede autorizar a los usuarios que procedan de una determinada ip con exclusión de todas las demás.
Bloquear ip
Para bloquear ips específicas, utilice este modo:
para permitir,negar negar desde 134.65,65.123 negar desde 69.111.45. permitir desde todos
Ahora vamos a explicar lo que dice. La primera línea establece que la primera instrucción a evaluar es permitir, incluso antes de negar. Esto significa que la línea tomada en consideración es la línea permitida de todos. Por lo tanto, sólo se bloquearán los usuarios que se encuentren dentro de las instrucciones establecidas por las dos líneas de rechazo.
¿Por qué se adoptó esta secuencia? Porque si se evaluara primero la instrucción denay, la siguiente, en este caso permitir, neutralizaría el bloqueo para usuarios de la ip indicada.
Tenga en cuenta que la tercera línea indica una ip parcial, lo que significa que una ip específica no está bloqueada, sino todas las que contienen la parte inicial 69.111.45.
Desbloquear ip
Para permitir que sólo unos pocos puedan ver un directorio o un sitio, y negar el acceso al resto del mundo, debemos usar las instrucciones a continuación:
orden negar, permitir negar de todos permitir de 134.65, 65.123 permitir de 69.111.45.
Bloqueo de un nombre de dominio en lugar del ip
También es posible bloquear a un usuario por dominio, no sólo por IP. Por ejemplo, si desea bloquear a los usuarios que vienen, por ejemplo, de una conexión vodafone.com, con las siguientes instrucciones puede aplicar un bloqueo incluso si cambian su ip
order allow,deny deny deny from vodafone.com allow from all
Este tipo de instrucción también funciona en el caso de dominios de tercer nivel, por ejemplo beta.vodafone.com
Bloqueo de usuarios a través de referenciadores
¿Qué es un referenciador? Es un sitio que contiene un enlace al suyo. Cuando un usuario sigue un enlace en una página de otro sitio, ese sitio se identifica como un referente.
¿Cuál es el uso específico de este tipo de bloque? Por ejemplo, puede bloquear los sitios que utilizan las imágenes subidas a su sitio, consumiendo así su ancho de banda. O incluso tu archivo css, u otros recursos. Esta forma de actuar les ahorrará el ancho de banda a su disposición sin recibir ninguna ventaja en términos de tráfico y visibilidad.
Por estas razones, y otras, es posible que desee optar por bloquear ciertas referencias.
Para que esta opción sea utilizable, sin embargo, el módulo mod_rewrite debe estar habilitado. Si no está seguro, pregunte a su proveedor de hosting incluso si, con toda probabilidad, el módulo ya está activo por defecto.
Aquí están las instrucciones en caso de que desee activar dicha restricción:
RewriteEngine onRewriteCond
%{HTTP_REFERERER} ^http://.*example1.com[NC,OR
]RewriteCond %{HTTP_REFERER} ^http://.*example2.com[NC,OR
]RewriteCond %{HTTP_REFERERER} ^http://.esempio3.com[NC
]RewriteRule .
– [F
]
Ahora procedamos con la explicación de cada uno de los aspectos.
La línea de inicio es necesaria para establecer que un conjunto de instrucciones relacionadas con la función de reescritura están a punto de ser enviadas.
Las siguientes tres líneas bloquean dominios específicos (una por línea).
Las dos letras NC significan que el control no debe ser sensible a mayúsculas y minúsculas, mientras que las letras O significan que una vez que la línea está terminada, está a punto de llegar una nueva.
La última línea, la de la regla de reescritura real, contiene la letra F que significa Prohibido, es decir, prohibido. Por lo tanto, todo visitante que tenga como referencia uno de los dominios indicados (example1.com, example2.com y example3.com) está prohibido y no puede acceder. El error que verá el visitante prohibido será: 403 Error prohibido.
Bloqueando a las arañas
¿Alguna vez ha comprobado su cuenta de Analytics y se ha dado cuenta de que gran parte de su tráfico no tiene nada que ver con sus visitantes? Bueno, es algo súper normal que primero le pasa a todo el mundo. Alrededor de la red hay muchos programas llamados bots, spiders, web scrapers y otros.
Son programas diseñados específicamente para ir y recuperar información específica de sitios web. Esta información puede variar de un caso a otro. A veces se utilizan para descubrir el contenido de los sitios, como la araña de Google, a veces se utilizan simplemente para robar los recursos de su cuenta sin recibir ningún beneficio.
En este caso, tan pronto como haya identificado el bot específico que desea bloquear, puede agregar este código al archivo.htaccess
ReescribirMotor en
RewriteCond %{HTTP_USER_AGENT} (googlebot|bingbot)[NC] RewriteRule .* -[R=403,L]
PRECAUCIÓN: Ten en cuenta que estas instrucciones harán que tu sitio web sea invisible para los usuarios que utilicen Google y Bing.
Redirecciones URL 301
¿Qué es Redirect 301? Y sobre todo, ¿cómo configurarlo sin perder el posicionamiento del sitio o de la página que desea transferir?
Aquí están las instrucciones sobre cómo implementar el redireccionamiento que le gusta a los motores de búsqueda y el código que debemos usar.
Suponga que desea crear un nuevo sitio, con una nueva dirección, que debe reemplazar un sitio antiguo que por cualquier razón queremos abandonar.
Supongamos también que el sitio antiguo tiene un importante rango de página y varias páginas en los resultados de búsqueda de Google.
¿Cómo podemos proceder con la creación del nuevo sitio sin perder todo el trabajo realizado en el anterior? Con el Redirect 301
Redireccionar 301 para un sitio
En este caso, tenemos que crear un fichero dentro del directorio principal del sitio y nombrarlo.htaccess (puntohtaccess). E introduzca el siguiente código:
ReescribirMotor en
RewriteRule (.*)$ http://www.newdomain.com/$1
Con este código, todo el tráfico generado por el sitio antiguo, será redirigido al nuevo (para ser insertado en lugar de
Redireccionar 301 para una página
Si, por otro lado, simplemente queremos reemplazar una sola página por una nueva, el código es el siguiente:
ReescribirMotor en
RewriteRule ^/?vecchia-pagina.html http://www.newdomain.com/nuova-pagina.html [R=301,L]