¿Qué es el archivo .htaccess en PHP?

El archivo .htaccess (Acceso de hipertexto) es un archivo de configuración del servidor distribuido Apache. Puede usar el archivo .htaccess para establecer configuraciones de servidor para un directorio específico. Este directorio puede ser el directorio raíz de su sitio web u otro subdirectorio donde se crea el archivo .htaccess para habilitar funciones adicionales para ese subdirectorio.

Puede utilizar el archivo .htaccess para modificar varias configuraciones y así realizar cambios en su sitio web. Estos cambios incluyen autorización, manejo de errores, redirecciones para URL específicas, permisos de usuario, etc. Como cualquier otro archivo de configuración de Apache, el archivo .htaccess se lee de arriba a abajo. Es decir, las configuraciones anteriores se realizan antes que las siguientes.

Usos comunes del archivo .htaccess:

1. Cambie la página de inicio predeterminada: suponga que desea cambiar su página de inicio (por ejemplo, index.html) con alguna otra página HTML (por ejemplo, home.html) mientras mantiene intacto el archivo index.html, puede cambiar la página de inicio predeterminada al agregando el código a continuación en su archivo .htaccess.

DirectoryIndex home.html

En el archivo de configuración, también es posible agregar más de un archivo. Aquí, en este ejemplo, primero, el servidor buscará index.html, si no encuentra un archivo con ese nombre, continúa con home.htm y así sucesivamente.

DirectoryIndex index.html home.html config.php

2. Bloquee una dirección IP específica o un rango de direcciones IP: también puede bloquear una dirección IP específica o un rango de direcciones IP para que no visiten su sitio web. Para hacer esto, debe agregar estas líneas a su archivo .htaccess:

  • Denegar IP específica: al usar esta plantilla, puede bloquear cualquier dirección IP deseada

    Order Deny,Allow
    Deny from 192.206.221.140 
    (Here 192.206.221.140 is a specific IPv4 Address)
  • Denegar la lista de direcciones IP: al enumerar las direcciones IP línea por línea, puede bloquear un conjunto de direcciones IP.

    Order Deny,Allow
    Deny from 185.120.120.120
    Deny from 192.190.190.190
  • Denegar el acceso desde un dominio específico: suponga que desea denegar el acceso a su sitio web alojado desde un dominio en particular (por ejemplo, www.redirectingdomain.com) que contiene un enlace a su sitio web, en ese caso, puede usar el código a continuación en su archivo .htaccess. Esto mostrará el error 403 Prohibido al hacer clic en el enlace a su sitio web desde redirectingdomain.com

    SetEnvIfNoCase Referer "redirectingdomain.com" bad_referer
    Order Allow,Deny
    Allow from ALL
    Deny from env=bad_referer
  • Bloquear o permitir rangos de direcciones IP:

    Order Allow,Deny
    Deny from 192.192.*.*
    Allow from all

    Donde * se usa para octetos completos

Nota: Para restringir el acceso desde ciertos países, debe obtener los rangos de direcciones IP asignados a ese país en particular. Es importante tener en cuenta que este método no es 100% eficiente ya que las asignaciones de direcciones IP pueden cambiar y los rangos de direcciones IP pueden superponerse. Aun así, este método bloquea la mayor parte del tráfico de los países especificados.

3. Redirección permanente 301: 301 es un código de respuesta HTTP a su navegador web desde el servidor web. Un código de estado 301 indica que los recursos solicitados se han movido permanentemente a una nueva URL. Los redireccionamientos 301 son muy útiles cuando una página ya no es relevante o la página se elimina. Puede usar el siguiente código para aplicar redireccionamientos 301.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain1.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain1.com [NC]
RewriteRule ^(.*)$ http://domain2.com/$1 [L,R=301,NC]

O simplemente puede usar el código a continuación

Redirect 301 / http://domain.com

4. De WWW a no WWW y de no WWW a WWW: como los motores de búsqueda consideran que las URL «www» y «no www» son dos cosas diferentes, es muy importante redirigir las requests de dominios no preferidos. Tomemos un ejemplo de «www.example.com»

  • Para realizar los redireccionamientos 301 de www a no www, debe agregar el siguiente código en su archivo .htaccess:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^geeksforgeeks.com [NC]
    RewriteRule ^(.*)$http://www.geeksforgeeks.com/$1 [L,R=301,NC]
  • Si desea realizar redireccionamientos 301 desde un dominio que no sea www a www, agregue el siguiente código:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.geeksforgeeks.com [NC]
    RewriteRule ^(.*)$http://geeksforgeeks.com/$1 [L,R=301,NC]

5. Redirigir de HTTP a HTTPS: 

¿Por qué redirigir el tráfico de HTTP a HTTPS?

Hay dos razones principales, una es la seguridad porque garantiza que los datos del usuario se cifren desde el navegador del usuario hasta el servidor web y la segunda razón es el SEO (optimización de motores de búsqueda) porque los sitios web HTTPS tienen mayores ventajas de clasificación sobre los sitios web HTTP. Si desea transferir todo el tráfico de su sitio web de HTTP a HTTPS, deberá agregar lo siguiente a su archivo .htaccess.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Header always set Content-Security-Policy "upgrade-insecure-requests;"
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

6. Personalice su página de error: si desea personalizar su página de error 404, puede definir su propia página de error personalizada en el archivo .htaccess. Simplemente copie el texto a continuación en su archivo .htaccess.

# Example 1: redirect errors to html files
ErrorDocument 404 /404.html

# Example 2: redirect errors to PHP file
ErrorDocument 404 /error.php?q=404

7. Carpeta autenticada: para fines de autenticación, puede proteger un directorio de una aplicación agregando el código que se proporciona a continuación en su archivo .htaccess. Una vez que se actualice el archivo .htaccess, su directorio requerirá un nombre de usuario y una contraseña para acceder a él.

AuthName "Your Authenticated Folder"
AuthUserFile /path/.htpasswd
AuthType Basic
require valid-user

Aquí, la primera línea del código le dice al servidor web Apache que el nombre del directorio protegido por contraseña es «Su carpeta autenticada». La segunda línea indica la ruta de esa carpeta y la siguiente línea determina el tipo de autenticación, en este ejemplo, estamos usando la autenticación HTTP básica. Finalmente, la última línea dice que necesitamos credenciales válidas.

Publicación traducida automáticamente

Artículo escrito por code_24x7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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