【问题标题】:Best way to redirect mobile devices [duplicate]重定向移动设备的最佳方式[重复]
【发布时间】:2012-03-14 08:40:51
【问题描述】:

可能重复:
Mobile Redirect using htaccess

目前我有一个使用 LAMP 的常规网站。我想将移动设备的重定向添加到子域,例如:m.mydomain.com

PC 和移动设备的内容之间会有一些内容差异。

最好的方法是什么?可以用 .htaccess 文件完成还是我需要某种 PHP 脚本?

谢谢。

【问题讨论】:

标签: php .htaccess


【解决方案1】:

我认为 .htaccess 会是最快的。你可能会在你的 htaccess 文件中添加这样的内容。

RewriteCond %{HTTP_HOST} ^www\.mydomain\.com [NC]
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteRule ^(.*)$ http://m.mydomain.com/$1 [L,R=302]

【讨论】:

  • 是的,我刚刚尝试了这个解决方案——效果很好,但是,我需要修改它以将浏览器重定向回 www.mydomain.com,因为它不是列表中的设备之一。我该怎么做?
  • 尝试用 ! 开始条件。 RewriteCond %{HTTP_USER_AGENT} !"android|blackberry|...
  • 我想我会用 RewriteCond %{HTTP_USER_AGENT} 将另一个 .htaccess 文件放入我的 w.mydomain.com 子目录中!"android|blackberry|...
  • 对您的后续评论@santa 有时您希望用户能够覆盖设置。即 iPhone 用户希望查看 www.mydomain.page。这可以通过设置 cookie(即“nomobile=true”)并对该 cookie 进行条件检查来实现。您可以添加此条件:RewriteCond %{HTTP_COOKIE} !^.*nomobile=true.*$ [NC]
  • 不幸的是,我当前的 www 有一些 iO 不支持的拖放功能,所以我可以接受 iPhone 目前只有移动版本。
【解决方案2】:

在您想将平板电脑与手机分开之前,这些答案都可以正常工作。为了获得更好的匹配,您需要类似Handset Detection(免责声明:我的初创公司)之类的东西,它可以按类别(平板电脑/控制台/移动设备)分离设备。您可以使用 API 工具包或在设备上使用 Javascript 检测服务器端。

【讨论】:

    【解决方案3】:

    嗨,圣诞老人,我发现了这个:

     if( navigator.userAgent.match(/Android/i) ||
     navigator.userAgent.match(/webOS/i) ||
     navigator.userAgent.match(/iPhone/i) ||
     navigator.userAgent.match(/iPod/i) ||
     navigator.userAgent.match(/BlackBerry/)
     ){
     // some code
    }
    

    来源:What is the best way to detect a mobile device in jQuery?

    【讨论】:

    • 这是一个 Javascript 解决方案,而不是 OP 提出的 .htaccess 或 PHP 问题。提供 JS 解决方案的问题是页面已经加载了用于确定操作系统类型的内容。而 .htaccess 和 PHP 都能够加载替代内容,甚至重定向到子域,这是理想的,因为它对用户来说更快更轻,并且在服务器上更轻,而不是服务多个请求。 .htaccess 是最好的解决方案,因为它在 apache 级别执行重定向。
    • 嗨哦,我明白了,你需要在页面绘制之前执行这个尝试这个。函数 preloadFunc() { alert("PreLoad"); } window.onpaint = preloadFunc();
    • 不,这样做仍然很糟糕...您正在使用 Javascript,这意味着它已经发生得太晚了。阿帕奇 > PHP > Javascript。始终首先从 Apache 级别进行内容交付或重定向。如果这不可能,请使用 PHP,因为您仍然可以将位置标头扔到备用位置,但 Javascript 只能用作重定向的绝对最后手段。 -- 在这种情况下不需要它。
    • 好点我从来没有这样想...我会考虑使用 PHP 或 htaccess 的解决方案
    猜你喜欢
    • 2014-12-26
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    相关资源
    最近更新 更多