Reglas htaccess esenciales: redirecciones, seguridad y más

El archivo .htaccess es una herramienta poderosa para configurar servidores Apache. Permite realizar redirecciones, mejorar la seguridad y optimizar el rendimiento de un sitio web. Aquí te dejo algunas reglas esenciales que te ayudarán a controlar mejor tu servidor.

Redirecciones con .htaccess

Redirigir HTTP a HTTPS

Para forzar la navegación segura con HTTPS, usa esta regla:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

Esto detecta si el usuario accede mediante HTTP y lo redirige a la versión segura.

Redirigir www a no-www

Si quieres que todas las URLs de tu sitio usen la versión sin «www»:

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

Lo contrario (redirigir no-www a www) sería:

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

Redirigir un dominio a otro

Si cambiaste de dominio y quieres redirigir todas las visitas:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com$
RewriteRule (.*)$ https://newdomain.com/$1 [R=301,L]
</IfModule>

Redirigir un subdominio a una carpeta

Si necesitas que subdominio.dominio.com apunte a una carpeta específica:

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

Redirección capturando query parameters

Para redirigir URLs con parámetros, como productos de Amazon:

RewriteCond %{QUERY_STRING} ^asin=(B[\dA-Z]{9}|\d{9}(X|\d)) [NC]
RewriteRule ^producto/?$ https://www.amazon.es/dp/%1 [R=301,L,NC]

Redirigir todas las páginas 404 a la home

Si quieres evitar que los usuarios caigan en errores 404:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . / [L,R=301]

Redirigir una URL específica a la home

Si necesitas redirigir una URL concreta a la home:

Redirect 301 /mi-url https://tudominio.com/

Redirigir todas las URLs de un dominio a la home

Útil cuando un dominio deja de tener contenido propio pero aún recibe tráfico:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/wp-admin.* 
RewriteCond %{REQUEST_URI} !^/wp-json.*
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? https://tudominio.com/ [R=301,L]

Optimización del servidor

Incrementar el tamaño máximo para subida de archivos

Si necesitas permitir la subida de archivos más grandes, añade esto:

php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

Control de indexación y SEO

Desindexar páginas eliminadas (Error 410)

Para indicar a los motores de búsqueda que una página ya no existe:

Redirect gone /pagina-a-eliminar

Desindexar paginaciones

Si usas paginación y quieres evitar que Google indexe esas URLs:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule page/\d+/$ - [G,NC,L]
</IfModule>

Seguridad con .htaccess

Evitar hotlinking de imágenes

Para bloquear que otros sitios usen tus imágenes sin permiso:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?tudominio.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|php|png|css|pdf)$ - [F]

Proteger el archivo .htaccess

Para evitar que otros puedan acceder y modificarlo:

<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

Desactivar la ejecución de PHP en ciertas carpetas

Para mejorar la seguridad en directorios sensibles, como uploads:

<FilesMatch "\.(php|php5)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Conclusión

El archivo .htaccess es clave para mejorar el rendimiento y la seguridad de tu web. Con estas reglas, puedes gestionar redirecciones, optimizar la indexación y evitar problemas de seguridad. ¡Úsalas con cuidado y haz siempre una copia de seguridad antes de modificarlo!

👉  Crear índices en JavaScript

👇Tu comentario