Biblioteca de Conocimiento Instrucciones sencillas para trabajar con el servicio Profitserver
Main Biblioteca de Conocimiento Configuración del archivo .htaccess

Configuración del archivo .htaccess


En este artículo, exploraremos los principios fundamentales del uso del archivo .htaccess, crucial para mejorar el SEO. Este archivo garantiza la correcta indexación de las páginas por parte de los motores de búsqueda. Aprenderemos a gestionar redirecciones, configurar la seguridad y optimizar el rendimiento. Además, ofreceremos consejos sobre cómo configurar este archivo de forma independiente.

¿Por qué es necesario .htaccess?

El archivo .htaccess funciona como una especie de "control remoto" para los desarrolladores web en servidores Apache. Ofrece herramientas prácticas para ajustar diversos parámetros y gestionar el comportamiento de un sitio web. Cuando no se puede acceder directamente a los archivos de configuración principales del servidor (como suele ocurrir con el alojamiento virtual, por ejemplo), .htaccess se convierte en una herramienta útil para realizar los cambios necesarios.

Htaccess suele ubicarse en la carpeta raíz de tu sitio web o en aquellas carpetas que requieren una configuración especial. Por ejemplo, si usas WordPress, puedes configurarlo mediante el plugin Yoast SEO, que comentamos en el artículo sobre... Configuración de robots.txtEn otros casos, basta con ir a la carpeta deseada y editar el archivo .htaccess existente, o crearlo si aún no se ha creado.

Configuración del archivo .htaccess

Redirección 301 htaccess

Una redirección 301 en el archivo .htaccess puede compararse con una redirección permanente en un sitio web. Informa a los motores de búsqueda y navegadores que la página se encuentra ahora en una nueva dirección permanente y sugiere actualizar los marcadores y la indexación. Esta redirección se utiliza normalmente cuando una página se mueve o se elimina para conservar su posicionamiento en los resultados de búsqueda y redirigir a los visitantes a la nueva ubicación.

Para activar las redirecciones, es necesario habilitar el comando correspondiente en el archivo .htaccess:

RewriteEngine on

Después de esto, puedes configurar la forma más simple de redirección:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>

Una redirección similar usando el Redirección permanente La directiva se ve así:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>

Estos son los métodos de redirección más fáciles de configurar. Consideremos una configuración que utiliza otros tipos de redirecciones más avanzados con mod_rewrite módulo:

<IfModule mod_rewrite.c>
RewriteEngine On
    
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]

# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
    
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>

Una redirección 302 de .htaccess, que indica una reubicación temporal, se encuentra con mucha menos frecuencia. A continuación, se muestra un ejemplo de dicha configuración:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>

Directiva ErrorDocument

Esta configuración le permite controlar lo que ve el usuario cuando se producen errores HTTP en su sitio. En lugar del mensaje de error estándar, puede mostrar su propia página, que será más informativa para el visitante y le ayudará a comprender lo sucedido. Simplemente siga esta sintaxis:

ErrorDocument <error_code> <URL_page>

Por ejemplo,

ErrorDocument 404 /errors/not_found.html

Significa que cuando un 404 Se produce un error en la página /errores/no_encontrado.html Se abrirá. Las URL absolutas se especifican de forma similar:

ErrorDocument 500 http://example.com/errors/server_error.html

Este ejemplo indica la visualización de la error_del_servidor.html página en http://example.com/errors/ en caso de un 500 error.

Denegar el acceso a un directorio de sitios

El archivo .htaccess tiene el comando Denegar de todos, que ayuda a denegar el acceso a ciertas carpetas o archivos en su servidor web. Esto puede ser útil si desea ocultar información privada o archivos importantes a los visitantes del sitio para garantizar la seguridad de los datos.

Para deshabilitar el listado (ver todos los directorios disponibles), debe agregar la línea:

Options -Indexes

Un ejemplo de bloqueo de acceso a un directorio específico se ve así:

<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>

De manera similar, puedes denegar el acceso a un solo archivo:

<Files "file.php">
Order Deny,Allow
Deny from all
</Files>

O para un rango de archivos por extensión:

<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>

Bloqueo de acceso por IP

Bloquear el acceso por IP en el archivo .htaccess es un método que permite restringir el acceso a su sitio web a direcciones IP específicas o a sus grupos. Esto puede ser útil si desea impedir el acceso a su sitio o a partes específicas de él a ciertas personas o bots no deseados.

El bloqueo de una sola dirección IP se realiza con el comando:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

El bloqueo de varias direcciones IP se realiza de manera similar duplicando el "Denegar de" línea con las direcciones requeridas.

Para bloquear un rango de direcciones IP:

Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24

Para permitir el acceso solo a direcciones IP específicas, agregue el código:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

Para denegar completamente el acceso, utilice la directiva Denegar de todos, y para bloquear direcciones por máscara, especifique Denegar de 11.22.

Dónde, 11.22 es la dirección IP máscara.

Bloqueo de visitantes por agente de usuario

Bloquear usuarios mediante el agente de usuario en el archivo .htaccess es un método para controlar quién puede acceder a su servidor web según la información sobre el navegador que utiliza el visitante. La cadena de agente de usuario contiene datos sobre el navegador que utiliza una persona para interactuar con su servidor y, gracias a esta información, puede restringir el acceso a ciertos usuarios.

La forma más común de bloquear mediante User-Agent es usar mod_rewrite:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>

En este ejemplo:

  1. RewriteCond %{HTTP_USER_AGENT} se utiliza para comprobar la cadena de agente de usuario.
  2. ^Bot1, ^Bot2, ^Bot3 son ejemplos de cadenas de agente de usuario que queremos bloquear. Los modificadores NC indican que la comparación no debe distinguir entre mayúsculas y minúsculas.
  3. RewriteRule ^.*$ - [F,L] se aplica a la solicitud si se cumple alguna de las condiciones de RewriteCond. Envía una respuesta con el código de estado 403 Prohibido (F) y detiene el procesamiento de las reglas (L).

Almacenamiento en caché en htaccess

Configurar el almacenamiento en caché mediante el archivo .htaccess ayuda a acelerar la carga de tu sitio web. Funciona así: ciertos archivos, como imágenes, estilos CSS y scripts de JavaScript, se almacenan en la caché del navegador del usuario tras la primera carga. Ahora, el navegador puede usar estos archivos de la caché, en lugar de recargarlos desde el servidor cada vez que el usuario visita una página. Esto reduce el tiempo de carga y mejora el rendimiento del sitio web.

Considere un ejemplo:

# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>

# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

Por otro lado, para los recursos que se actualizan con frecuencia, es necesario deshabilitar el almacenamiento en caché:

# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>

Optimización del rendimiento del sitio

El mod_deflate y mod_gzip Los módulos de Apache ayudan a comprimir la información que el servidor envía a los dispositivos de los usuarios. Esto reduce el tamaño de los archivos, lo que a su vez acelera la carga de las páginas. Sin embargo, es importante recordar que la compatibilidad y la configuración de estos módulos pueden variar según el servidor.

Ejemplo de uso de la mod_deflate módulo:

<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Ejemplo para mod_gzip:

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>

Analizamos las directivas más utilizadas. Puede familiarizarse con todas las funciones del archivo en el... documentación oficial.

Cómo comprobar la funcionalidad del archivo .htaccess

Para comprobar si su archivo .htaccess funciona en el sitio, puede realizar los siguientes pasos:

  1. Se modificó intencionalmente el archivo .htaccess con un error. Como respuesta, el servidor debería generar un error. Este método muestra si la operación del archivo se aplica generalmente en el servidor.
  2. Verifique la funcionalidad de los cambios específicos que haya realizado. Por ejemplo, realice un pequeño ajuste en un parámetro y evalúe la presencia de cambios.
  3. Verifique el código de estado de la página si los cambios están relacionados con la respuesta del servidor. Cómo hacerlo, lo describimos previamente en el artículo. Códigos de error HTTP: una lista completa de errores del servidor.
  4. Consulte los registros del servidor. Estos muestran todos los errores relacionados con el funcionamiento del archivo .htaccess.
  5. Realizar pruebas utilizando servicios o herramientas en línea.

Es importante comprender que para comprobar la funcionalidad del archivo .htaccess, no es necesario realizar todos los pasos a la vez. Basta con elegir el método más adecuado de la lista y utilizarlo.

Conclusión

Configurar el archivo .htaccess es un paso importante para optimizar y proteger su servidor Apache. Hemos explorado cómo este archivo ayuda a gestionar redirecciones, comprimir contenido y garantizar la seguridad. Una vez que domine el uso de .htaccess, dispondrá de una potente herramienta para mejorar el rendimiento y la funcionalidad de sus sitios web.

❮ Artículo anterior Configuración del servidor FTP
Siguiente artículo ❯ Cómo configurar un servidor web (Apache-PHP-MySQL/MariaDB) en Linux

Pregúntenos sobre VPS

Siempre estamos listos para responder sus preguntas en cualquier momento del día o de la noche.