如何将移动站点用户重定向到移动布局


How to redirect mobile site users to a mobile layout

我找不到一些关于我特别寻找的可靠信息,我也不知道这样做的最佳方法(在代码中或使用HTACCESS);将移动用户重定向到http://m.example.com

我希望使移动,和PC用户查看我们的网站在这两个设备,与用户友好的布局,以适应两个用户。

没有HTACCESS的解决方案:

最好的方法是将选择的布局信息存储在Cookie中。

if(isset($_GET["setMobile"])) {
  setcookie("m", $_GET["setMobile"], time()+(60*60*24*31), "/");
}

if($_COOKIE["m"]) {
  /* MOBILE LAYOUT */
}

我认为你甚至不需要htaccess。你可以在你的子文件夹m.domain.com中创建index.php,并将Cookie定义放在那里。

setcookie("m", true, time()+(60*60*24*31), "/");

解决方案:A:将移动用户重定向到移动布局

通过. htaccess

RewriteEngine On
RewriteCond %{QUERY_STRING} !^desktop
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|iphone|ipod|#opera mobile|palmos|webos" [NC]
RewriteRule ^$ http://m.example.com [L,R=302]

=====================

解决方案:B:将移动站点用户重定向到移动布局,从移动到桌面

Via PHP Session

<a href="<?php echo $_SERVER['PHP_SELF'], '?desktop=1' ?>">Go to Desktop version</a>
<?php
if(!isset($_SESSION['desktop'])) {
    $_SESSION['desktop'] = false;
}
if(isset($_GET['desktop']) && $_GET['desktop'] == 1) {
    $_SESSION['desktop'] = true;
}
if(!$_SESSION['desktop']) {
    if ( !$detect->isMobile() ) {
      header('Location: http://m.example.com/');
    }
}
?>

在您的移动站点上,您可以传递一个get参数desktop=1。通常,如果没有传递参数,并且没有设置会话,则为false。如果$_SESSION['desktop']的值为false,则继续脚本,使其重定向到移动设备。但是一旦参数被传递,它将会话更改为true,并且您的block将不会被执行,因此站点的正常(桌面)内容将可见。