.htaccess histórico: versión móvil mediante cookie
Cómo funcionaban las redirecciones a un subdominio móvil con mod_rewrite y por qué hoy se prefiere una única web responsive.
- Revisado
- Compatibilidad
- Apache 2.4; patrón histórico, no recomendado para proyectos nuevos
- Lectura
- 2 min
- Autor
- Gabriel — infinit8
Hubo una etapa en la que la versión móvil vivía en otro subdominio y el usuario podía forzarla con un parámetro. Este patrón de mod_rewrite guardaba la preferencia en una cookie y redirigía según el agente de usuario.
Qué resolvía
- Leer
?mobile=1o?mobile=0. - Guardar la elección con la bandera
CO. - Evitar la redirección cuando existe una preferencia.
- Enviar agentes móviles al sitio alternativo.
Fragmento anonimizado para estudiar
Es deliberadamente una muestra incompleta: una regla real debe definir dominio, HTTPS, duración y alcance de la cookie, además de prevenir bucles entre hosts.
RewriteEngine On
RewriteCond %{QUERY_STRING} (^|&)mobile=1(&|$)
RewriteRule ^ - [CO=mobile:1:.example.test:1440:/]
RewriteCond %{HTTP_COOKIE} !(^|;\s*)mobile=0(;|$)
RewriteCond %{HTTP_USER_AGENT} "Android|iPhone" [NC]
RewriteRule ^ https://m.example.test%{REQUEST_URI} [R=302,L]
No detectes capacidades por User-Agent para una web nueva. Empieza con 302 durante las pruebas; un 301 mal diseñado queda cacheado y puede crear bucles difíciles de retirar.
La solución actual
Una URL canónica y un layout responsive evitan duplicar contenido, sesiones, analítica y reglas SEO. Las redirecciones por dispositivo solo tienen sentido cuando dos aplicaciones realmente distintas lo exigen.
Preguntas frecuentes
¿La bandera CO sigue existiendo?
Sí. Apache 2.4 permite establecer cookies desde una regla, aunque eso no convierte la detección por agente de usuario en una arquitectura recomendable.
¿Por qué usar 302 al probar?
Porque es temporal. Cuando el comportamiento, los bucles y el SEO estén verificados se decide si una redirección permanente tiene sentido.
Referencias y revisión
Contenido contrastado con documentación oficial. Comprueba siempre el comportamiento en un entorno de pruebas antes de desplegar cambios.