2010-09-09 28 views
51

Tengo un sitio web llamadoRedireccionamiento móvil utilizando .htaccess

www.website.org

Tengo un sitio web móvil llamado

m.website.org

Quiero usar un htaccess para redirigir automáticamente la URL del sitio web principal de la versión móvil ...

Sin embargo, hay un enlace en la versión móvil que apunta a la m ain sitio web llamado

www.website.org?noredirect=true

Al hacer clic en el logotipo de la página principal del sitio web real que vincula a

www.website.org

no quiero que el usuario que se le permita volver a móvil accidentalmente haciendo clic en el logotipo en la página principal. ¿Cómo puedo lograr esto a través de htaccess sin JavaSCript?

Si no, tengo la mente abierta para alternar opciones.

EDITAR

Creo que actualmente Voy a utilizar esto para la detección de redireccionamiento móvil a través de htaccess

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|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|bumb|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|e\-|e\/|\-[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|do|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(40|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|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC] 
RewriteRule ^$ http://m.website.com [R,L] 
+0

¿Cómo desea determinar por adelantado que deben ser redirigidos al sitio móvil/¿cómo va a persistir el estado NoRedirect través de peticiones si hacen clic de nuevo a la página web principal? –

+0

Tiene que haber algo para comprobar si están en un teléfono móvil o no, que ya tengo configurado JavaScript para modificar CSS, pero si intentan abandonarlo, se lo redireccionará. – balexander

+1

Su última EDITACIÓN que usa para detectar redirección móvil tiene algunos errores. A veces detecta IE8 en W7 como dispositivo móvil. No puedo reproducir esto en este momento, pero los mantendré informados tan pronto como investigue más. – Marakoss

Respuesta

42

Probé partes y piezas de los siguientes, pero no la regla completa Situado en su en su totalidad, así que si te encuentras con problemas con él házmelo saber y voy a cavar un poco más. Sin embargo, suponiendo que tengo todo lo correcto, usted podría intentar algo como lo siguiente:

RewriteEngine On 

# Check if this is the noredirect query string 
RewriteCond %{QUERY_STRING} (^|&)noredirect=true(&|$) 
# Set a cookie, and skip the next rule 
RewriteRule^- [CO=mredir:0:%{HTTP_HOST},S] 

# Check if this looks like a mobile device 
# (You could add another [OR] to the second one and add in what you 
# had to check, but I believe most mobile devices should send at 
# least one of these headers) 
RewriteCond %{HTTP:x-wap-profile} !^$ [OR] 
RewriteCond %{HTTP:Profile}  !^$ 
# Check if we're not already on the mobile site 
RewriteCond %{HTTP_HOST}   !^m\. 
# Check to make sure we haven't set the cookie before 
RewriteCond %{HTTP:Cookie}  !\smredir=0(;|$) 
# Now redirect to the mobile site 
RewriteRule^http://m.example.org%{REQUEST_URI} [R,L] 
+0

¡Gracias, lo comprobaré! – balexander

+0

¿Algún veredicto? :) Me gusta el aspecto del código de Tim. – Francisc

+0

Lo siento, sí funcionó! – balexander

58
La solución de

Tim Stone está en el camino correcto, pero su RewriteRule inicial y ya su nombre de la cookie en la condición final son diferentes, y usted no puede escribir y leer una cookie en la misma solicitud.

Aquí está el código de trabajo finalizado:

RewriteEngine on 
RewriteBase/
# Check if this is the noredirect query string 
RewriteCond %{QUERY_STRING} (^|&)m=0(&|$) 
# Set a cookie, and skip the next rule 
RewriteRule^- [CO=mredir:0:www.website.com] 

# Check if this looks like a mobile device 
# (You could add another [OR] to the second one and add in what you 
# had to check, but I believe most mobile devices should send at 
# least one of these headers) 
RewriteCond %{HTTP:x-wap-profile} !^$ [OR] 
RewriteCond %{HTTP:Profile}  !^$ [OR] 
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC] 
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC] 

# Check if we're not already on the mobile site 
RewriteCond %{HTTP_HOST}   !^m\. 
# Can not read and write cookie in same request, must duplicate condition 
RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$) 

# Check to make sure we haven't set the cookie before 
RewriteCond %{HTTP_COOKIE}  !^.*mredir=0.*$ [NC] 

# Now redirect to the mobile site 
RewriteRule^http://m.website.com [R,L] 
+1

Gracias. He estado buscando solución de bucle de redirección. Este lo aborda bien hasta ahora. – swan

+5

¿Esto muestra la versión de escritorio o móvil en un ipad? Si es un dispositivo móvil, ¿cómo se podría mostrar la versión de escritorio de forma predeterminada? ¿Tiene una recomendación para aprender más sobre estas expresiones regulares? – zylstra

+1

Esta es una buena solución, pero actualmente no funciona en el dispositivo móvil Firefox/Chrome, pero el navegador interno de Android funciona bien. Creo que se agregarán más agentes de usuario. Probablemente necesitamos algo como: "android | blackberry | ipad | iphone | ipod | iemobile | ópera móvil | palmos | webos | googlebot-mobile" –

20

modifiqué solución de Tim piedra aún más. Esto permite que la cookie esté en 2 estados, 1 para dispositivos móviles y 0 para dispositivos completos. Cuando la cookie móvil está configurada en 0, incluso un navegador móvil irá al sitio completo.

Aquí está el código:

<IfModule mod_rewrite.c> 
    RewriteBase/
    RewriteEngine On 

    # Check if mobile=1 is set and set cookie 'mobile' equal to 1 
    RewriteCond %{QUERY_STRING} (^|&)mobile=1(&|$) 
    RewriteRule^- [CO=mobile:1:%{HTTP_HOST}] 

    # Check if mobile=0 is set and set cookie 'mobile' equal to 0 
    RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$) 
    RewriteRule^- [CO=mobile:0:%{HTTP_HOST}] 

    # cookie can't be set and read in the same request so check 
    RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$) 
    RewriteRule^- [S=1] 

    # Check if this looks like a mobile device 
    RewriteCond %{HTTP:x-wap-profile} !^$ [OR] 
    RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC,OR] 
    RewriteCond %{HTTP:Profile}  !^$ 

    # Check if we're not already on the mobile site 
    RewriteCond %{HTTP_HOST}   !^m\. 
    # Check to make sure we haven't set the cookie before 
    RewriteCond %{HTTP:Cookie}  !\mobile=0(;|$) 
    # Now redirect to the mobile site 
    RewriteRule^http://m.example.com%{REQUEST_URI} [R,L] 
</IfModule> 
+0

+1 para agregar '% {REQUEST_URI}' –

+0

Código mucho mejor que la respuesta aceptada, también es más genérico, lo que permite un uso más fácil. ¡Gracias! – Community

+0

¿Alguna idea de cómo puedo evitar redirigir una página específica al sitio móvil? Por favor, consulte http://stackoverflow.com/questions/18871314/rewritecond-to-exclude-a-path-not-working ¡Gracias! – Community

-5

O usted puede intentar esto:

?php 

/** 
* Mobile Detect 
* @license http://www.opensource.org/licenses/mit-license.php The MIT License 
*/ 
class Mobile_Detect 
{ 
    protected $accept; 
    protected $userAgent; 
    protected $isMobile = false; 
    protected $isAndroid = null; 
    protected $isAndroidtablet = null; 
    protected $isIphone = null; 
    protected $isIpad = null; 
    protected $isBlackberry = null; 
    protected $isBlackberrytablet = null; 
    protected $isOpera = null; 
    protected $isPalm = null; 
    protected $isWindows = null; 
    protected $isWindowsphone = null; 
    protected $isGeneric = null; 
    protected $devices = array(
    "android" => "android.*mobile", 
    "androidtablet" => "android(?!.*mobile)", 
    "blackberry" => "blackberry", 
    "blackberrytablet" => "rim tablet os", 
    "iphone" => "(iphone|ipod)", 
    "ipad" => "(ipad)", 
    "palm" => "(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)", 
    "windows" => "windows ce; (iemobile|ppc|smartphone)", 
    "windowsphone" => "windows phone os", 
    "generic" => "(kindle|mobile|mmp|midp|pocket|psp|symbian|smartphone|treo|up.browser|up.link|vodafone|wap|opera mini)"); 

    public function __construct() 
    { 
     $this->userAgent = $_SERVER['HTTP_USER_AGENT']; 
     $this->accept = $_SERVER['HTTP_ACCEPT']; 

     if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE'])) 
     { 
      $this->isMobile = true; 
     } 
     elseif (strpos($this->accept, 'text/vnd.wap.wml') > 0 || strpos($this->accept, 'application/vnd.wap.xhtml+xml') > 0) 
     { 
      $this->isMobile = true; 
     } 
     else 
     { 
      foreach ($this->devices as $device => $regexp) 
      { 
       if ($this->isDevice($device)) 
       { 
        $this->isMobile = true; 
       } 
      } 
     } 
    } 

    /** 
    * Overloads isAndroid() | isAndroidtablet() | isIphone() | isIpad() | isBlackberry() | isBlackberrytablet() | isPalm() | isWindowsphone() | isWindows() | isGeneric() through isDevice() 
    * 
    * @param string $name 
    * @param array $arguments 
    * @return bool 
    */ 
    public function __call($name, $arguments) 
    { 
     $device = substr($name, 2); 
     if ($name == "is" . ucfirst($device) && array_key_exists(strtolower($device), $this->devices)) 
     { 
      return $this->isDevice($device); 
     } 
     else 
     { 
      trigger_error("Method $name not defined", E_USER_WARNING); 
     } 
    } 

    /** 
    * Returns true if any type of mobile device detected, including special ones 
    * @return bool 
    */ 
    public function isMobile() 
    { 
     return $this->isMobile; 
    } 

    protected function isDevice($device) 
    { 
     $var = "is" . ucfirst($device); 
     $return = $this->$var === null ? (bool) preg_match("/" . $this->devices[strtolower($device)] . "/i", $this->userAgent) : $this->$var; 
     if ($device != 'generic' && $return == true) { 
     $this->isGeneric = false; 
    } 
    return $return; 
} 
+2

esto es una exageración seria para lo que OP ha pedido – yfrancis

+0

en serio? Se muestran todas las habilidades en solo un "Hola mundo" ... Ideal para una entrevista. :) –

-3

En primer lugar, vaya a la siguiente URL y descargar el mobile_detect.archivo PHP:

http://code.google.com/p/php-mobile-detect/

Inserte el siguiente código en su página de índice o en el hogar:

<?php 
@include("Mobile_Detect.php"); 
$detect = new Mobile_Detect(); 
if ($detect->isMobile() && isset($_COOKIE['mobile'])) 
{ 
$detect = "false"; 
} 
elseif ($detect->isMobile()) 
{ 
header("Location:http://www.yourmobiledirectory.com"); 
} 
?> 
-2

También puede probar esto. Créditos al autor original que desde entonces ha eliminado el guión

/mobile.class.php

<?php 
/* 
===================================================== 
Mobile version detection 
----------------------------------------------------- 
compliments of http://www.buchfelder.biz/ 
===================================================== 
*/ 

$mobile = "http://www.stepforth.mobi"; 
$text = $_SERVER['HTTP_USER_AGENT']; 
$var[0] = 'Mozilla/4.'; 
$var[1] = 'Mozilla/3.0'; 
$var[2] = 'AvantGo'; 
$var[3] = 'ProxiNet'; 
$var[4] = 'Danger hiptop 1.0'; 
$var[5] = 'DoCoMo/'; 
$var[6] = 'Google CHTML Proxy/'; 
$var[7] = 'UP.Browser/'; 
$var[8] = 'SEMC-Browser/'; 
$var[9] = 'J-PHONE/'; 
$var[10] = 'PDXGW/'; 
$var[11] = 'ASTEL/'; 
$var[12] = 'Mozilla/1.22'; 
$var[13] = 'Handspring'; 
$var[14] = 'Windows CE'; 
$var[15] = 'PPC'; 
$var[16] = 'Mozilla/2.0'; 
$var[17] = 'Blazer/'; 
$var[18] = 'Palm'; 
$var[19] = 'WebPro/'; 
$var[20] = 'EPOC32-WTL/'; 
$var[21] = 'Tungsten'; 
$var[22] = 'Netfront/'; 
$var[23] = 'Mobile Content Viewer/'; 
$var[24] = 'PDA'; 
$var[25] = 'MMP/2.0'; 
$var[26] = 'Embedix/'; 
$var[27] = 'Qtopia/'; 
$var[28] = 'Xiino/'; 
$var[29] = 'BlackBerry'; 
$var[30] = 'Gecko/20031007'; 
$var[31] = 'MOT-'; 
$var[32] = 'UP.Link/'; 
$var[33] = 'Smartphone'; 
$var[34] = 'portalmmm/'; 
$var[35] = 'Nokia'; 
$var[36] = 'Symbian'; 
$var[37] = 'AppleWebKit/413'; 
$var[38] = 'UPG1 UP/'; 
$var[39] = 'RegKing'; 
$var[40] = 'STNC-WTL/'; 
$var[41] = 'J2ME'; 
$var[42] = 'Opera Mini/'; 
$var[43] = 'SEC-'; 
$var[44] = 'ReqwirelessWeb/'; 
$var[45] = 'AU-MIC/'; 
$var[46] = 'Sharp'; 
$var[47] = 'SIE-'; 
$var[48] = 'SonyEricsson'; 
$var[49] = 'Elaine/'; 
$var[50] = 'SAMSUNG-'; 
$var[51] = 'Panasonic'; 
$var[52] = 'Siemens'; 
$var[53] = 'Sony'; 
$var[54] = 'Verizon'; 
$var[55] = 'Cingular'; 
$var[56] = 'Sprint'; 
$var[57] = 'AT&T;'; 
$var[58] = 'Nextel'; 
$var[59] = 'Pocket PC'; 
$var[60] = 'T-Mobile';  
$var[61] = 'Orange'; 
$var[62] = 'Casio'; 
$var[63] = 'HTC'; 
$var[64] = 'Motorola'; 
$var[65] = 'Samsung'; 
$var[66] = 'NEC'; 

$result = count($var); 

for ($i=0;$i<$result;$i++) 
{  
    $ausg = stristr($text, $var[$i]);  
    if(strlen($ausg)>0) 
    { 
     header("location: $mobile"); 
     exit; 
    } 

} 
?> 

apenas corrige la $mobile = "http://www.stepforth.mobi";

+4

Ese es un código PHP seriamente malo. – Ariel

+0

@Ariel su razón? – TheBlackBenzKid

+2

Numera individualmente los elementos de la matriz, lo cual es una tontería. Está creando la matriz en 66 comandos separados en lugar de una inicialización de matriz, que es lenta. Está utilizando un bucle for para la matriz en lugar de un bucle foreach, que no es idiomático. – Ariel

5

Gracias Tim Stone, naunu, y Kevin Bond, esas respuestas realmente me ayudó Aquí está mi adaptación de tu código. Agregué la funcionalidad para redireccionar al sitio de escritorio desde m.example.com en caso de que el usuario no visite el sitio con un dispositivo móvil. Además he añadido una variable de entorno para preservar las solicitudes HTTP/HTTPS:

# Set an environment variable for http/https. 
RewriteCond %{HTTPS} =on 
RewriteRule ^(.*)$ - [env=ps:https] 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ - [env=ps:http] 

# Check if m=1 is set and set cookie 'm' equal to 1. 
RewriteCond %{QUERY_STRING} (^|&)m=1(&|$) 
RewriteRule^- [CO=m:1:example.com] 

# Check if m=0 is set and set cookie 'm' equal to 0. 
RewriteCond %{QUERY_STRING} (^|&)m=0(&|$) 
RewriteRule^- [CO=m:0:example.com] 

# Cookie can't be set and read in the same request so check. 
RewriteCond %{QUERY_STRING} (^|&)m=0(&|$) 
RewriteRule^- [S=1] 

# Check if this looks like a mobile device. 
RewriteCond %{HTTP:x-wap-profile} !^$ [OR] 
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC,OR] 
RewriteCond %{HTTP:Profile} !^$ 
# Check if we're not already on the mobile site. 
RewriteCond %{HTTP_HOST} !^m\. 
# Check if cookie is not set to force desktop site. 
RewriteCond %{HTTP_COOKIE} !^.*m=0.*$ [NC] 
# Now redirect to the mobile site preserving http or https. 
RewriteRule^%{ENV:ps}://m.example.com%{REQUEST_URI} [R,L] 

# Check if this looks like a desktop device. 
RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile)" [NC] 
# Check if we're on the mobile site. 
RewriteCond %{HTTP_HOST} ^m\. 
# Check if cookie is not set to force mobile site. 
RewriteCond %{HTTP_COOKIE} !^.*m=1.*$ [NC] 
# Now redirect to the mobile site preserving http or https. 
RewriteRule^%{ENV:ps}://example.com%{REQUEST_URI} [R,L] 

Esto parece funcionar bien, excepto una cosa: Cuando estoy en el sitio de escritorio con un dispositivo de sobremesa y yo vamos a m.example.com/ ? m = 1, me redirigen a example.com. Cuando lo intento de nuevo, me "quedo" en m.example.com. Parece que la cookie no se configuró y/o no se leyó correctamente la primera vez.

Tal vez haya una mejor manera de determinar si el dispositivo es un dispositivo de escritorio, simplemente negué la detección del dispositivo desde arriba.

Y me pregunto si de esta forma se detectarán todos los dispositivos móviles. En el código de Tim Stone y Naunu esa parte es mucho más grande.

2

Del mismo modo, si desea volver a dirigir a una subcarpeta en lugar de un sub-dominio, haga lo siguiente:

Trabajar fuera del gran solución de Kevin puede agregar esto al archivo .htaccess en la raíz de su sitio directorio:

<IfModule mod_rewrite.c> 
     RewriteBase/
     RewriteEngine On 

     # Check if mobile=1 is set and set cookie 'mobile' equal to 1 
     RewriteCond %{QUERY_STRING} (^|&)mobile=1(&|$) 
     RewriteRule^- [CO=mobile:1:%{HTTP_HOST}] 

     # Check if mobile=0 is set and set cookie 'mobile' equal to 0 
     RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$) 
     RewriteRule^- [CO=mobile:0:%{HTTP_HOST}] 

     # cookie can't be set and read in the same request so check 
     RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$) 
     RewriteRule^- [S=1] 

     # Check if this looks like a mobile device 
     RewriteCond %{HTTP:x-wap-profile} !^$ [OR] 
     RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC,OR] 
     RewriteCond %{HTTP:Profile}  !^$ 

     # Check if we're not already on the mobile site 
     RewriteCond %{HTTP_HOST}   !^m\. 
     # Check to make sure we haven't set the cookie before 
     RewriteCond %{HTTP:Cookie}  !\mobile=0(;|$) 
     # Now redirect to the mobile site 
     RewriteRule^http://www.mysite.com/m/ [R] 
    </IfModule> 

a continuación, en la carpeta /m/, añadir o crear un .htaccess con el siguiente:

#Begin user agent loop fix 

     RewriteEngine Off 
     RewriteBase/

    #End user agent loop fix 

yo sé que no es un ans directos Fue a la pregunta, pero alguien (como yo) podría tropezar con esta pregunta y preguntarse cómo se podría lograr ese método también.

+0

, esta es una buena idea. Gracias – dhpratik

-1

para los móviles como domain.com/m/

RewriteCond %{HTTP_REFERER} !^http://(.*).domain.com/.*$ [NC] 
RewriteCond %{REQUEST_URI} !^/m/.*$ 
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC] 
RewriteRule ^(.*)$ /m/ [L,R=302] 
Cuestiones relacionadas