Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/06/2017, 10:15
chelix
 
Fecha de Ingreso: septiembre-2006
Ubicación: Montevideo
Mensajes: 46
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: .htaccess - Redireccionar moviles a subdomino conservando TODA la URL

Solucione el problema.
Posteo mi solución final para que otros la usen también.

Quería además de lo explicitado en el msg anterior que el usuario pudiera pasar de la versión móvil a la clásica. Eso complico bastante las cosas por un tema de redireccionamiento infinito que lleva al error. Así que creo una cookie para evitar eso.

Cita:
##REWRITE DEFAULTS
RewriteEngine On
RewriteBase /

##MOBILE REDIRECTION
#Se comprueba si se está utilizando el parámetro m para no redirigir a la versión móvil
RewriteCond %{QUERY_STRING} (^|&)m=0(&|$)
#Si es así se crea la cookie
RewriteRule ^ - [CO=mredir:0:www.miweb.com]

#Varias comprobaciones de navegador utilizado
RewriteCond %{HTTP_USER_AGENT} android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iem obile|ip(hone|od)|iris|kindle|lge\ |maemo|meego.+mobile|midp|mmp|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\. (browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar (ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|b umb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a |jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|d o|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran |owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(4 0|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98 )|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-) [NC]

#Comprobamos que no estemos ya en la versión móvil
RewriteCond %{HTTP_HOST} !^m\.

#No se puede leer y escribir una cookie en la misma petición, hay que duplicar la condición
RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$)

#Se comprueba que no se haya configurado antes la cookie
RewriteCond %{HTTP_COOKIE} !^.*mredir=0.*$ [NC]

#La siguiente linea me permite crear una función de anulación - así un navegador móvil sera capaz de ver el sitio desktop.
#Solo agregar un boton-link al frente del sitio movil con un link similar a http://miweb.com?no_mobile y apache no redireccionara a estos usuarios móviles.
RewriteCond %{THE_REQUEST} !no_mobile [NC]

#Redirigimos a la versión móvil
RewriteRule ^ http://m.miweb.com%{REQUEST_URI} [R=302,L]