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.
Contenidos
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!