.htaccessRedireccionesSeguridad5 min de lectura

Configurar .htaccess para tu sitio

Redirecciones 301/302, páginas de error personalizadas, bloqueo de IPs y reescritura de URLs.


¿Qué es .htaccess?

El archivo .htaccess es un archivo de configuración de Apache/LiteSpeed que permite controlar el comportamiento del servidor a nivel de directorio. Se ubica en public_html/ y afecta a todo el sitio.

Redirecciones

Redirección 301 (permanente)

apache
# Redirigir una página específica
Redirect 301 /pagina-vieja https://tudominio.com/pagina-nueva

# Redirigir con RewriteRule
RewriteEngine On
RewriteRule ^blog/articulo-viejo$ /blog/articulo-nuevo [R=301,L]

Redirección 302 (temporal)

apache
Redirect 302 /mantenimiento https://tudominio.com/proximamente

Redirigir dominio completo

apache
RewriteEngine On
RewriteCond %{HTTP_HOST} ^dominio-viejo\.com$ [NC]
RewriteRule ^(.*)$ https://dominio-nuevo.com/$1 [R=301,L]

Forzar www o sin www

apache
# Forzar www
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

# Forzar sin www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Páginas de error personalizadas

apache
# Errores personalizados
ErrorDocument 404 /errores/404.html
ErrorDocument 403 /errores/403.html
ErrorDocument 500 /errores/500.html
ErrorDocument 503 /errores/503.html

Bloquear IPs

apache
# Bloquear IPs específicas
<RequireAll>
  Require all granted
  Require not ip 192.168.1.100
  Require not ip 10.0.0.0/8
</RequireAll>

# Sintaxis alternativa (Apache 2.2)
Order Allow,Deny
Allow from all
Deny from 192.168.1.100

Protección contra hotlinking

Evitá que otros sitios usen tus imágenes directamente:

apache
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?tudominio\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F,NC,L]

Headers de seguridad

apache
<IfModule mod_headers.c>
  # Prevenir clickjacking
  Header always set X-Frame-Options "SAMEORIGIN"
  
  # Prevenir MIME sniffing
  Header always set X-Content-Type-Options "nosniff"
  
  # XSS Protection
  Header always set X-XSS-Protection "1; mode=block"
  
  # Referrer Policy
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  
  # Permissions Policy
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

Deshabilitar listado de directorios

apache
# Evitar que se vea el contenido de carpetas sin index
Options -Indexes

Proteger archivos sensibles

apache
# Bloquear acceso a archivos de configuración
<FilesMatch "^\.(htaccess|htpasswd|env)$">
  Require all denied
</FilesMatch>

# Bloquear acceso a wp-config.php
<Files wp-config.php>
  Require all denied
</Files>

Recomendaciones

  • Siempre hacé backup del .htaccess antes de editarlo
  • Probá los cambios inmediatamente después de guardar
  • Si el sitio da error 500, revisá la sintaxis del archivo
  • Usá comentarios (#) para documentar cada regla
  • No dupliques RewriteEngine On (una sola vez al inicio)

¿Te resultó útil esta guía?