我们已经为移动设备准备了网站的替代版本。我们提供的内容不同,而且效果很好。

检测要提供哪个版本的最佳方法是什么?我们没有所有移动设备的列表,因此使用用户代理标头很棘手,因为我们可能会错过一些东西。

我们考虑过使用设备屏幕宽度 - 但如果移动设备不支持 JavaScript 会发生什么。我们如何嗅探这个?

有帮助吗?

解决方案

您可以使用的设备描述数据库(例如 WURFL ),其将识别所述客户端设备从所述请求头。然后,您可以查询该数据库,以决定是否该设备可以处理你的网站(例如支持JavaScript,或者是屏幕够大)决定是否将其重定向到其他网站之前。

您不提你的环境,但WURFL提供Java和PHP的API,也许其他人。如果没有提供的API,你仍然可以使用WURFL,但你必须分析和自己处理XML数据。

其他提示

媒体=“手持”不与现代智能手机,如iPhone其假装是一个桌面浏览器中工作(使用屏幕的媒体类型)。

http://detectmobilebrowser.com/ 免费和开源的,有许多语言版本的全面移动用户代理检查 - 的JavaScript,PHP,asp.net,红宝石等

如果您正在寻找重定向到使用JavaScript移动网站,我注意到,WURFL也有一个解决方案将允许你做服务器端检测用JavaScript。

<script type='text/javascript' src="//wurfl.io/wurfl.js"></script>

您将留下JSON对象看起来像:

{
     "complete_device_name":"Apple iPhone 6",
     "is_mobile":true,
     "form_factor":"Smartphone"
}

可以然后使用此:

if (WURFL.is_mobile === true) {
    window.location.replace("http://stackoverflow.com");
}

我不觉得有什么,如果用户自己安装Javascript检测好/优雅的方式。

IMO,最好的是列出用户代理:这里是User-Agent的名单,这似乎相当齐全(法语,黯然)。

只是把这个在你的头:

<script type="text/javascript">
 <!--
  if (screen.width <= 700) {
  window.location = "http://www.mobile-site.com";
  }
 //-->
</script>

大概每个人的电脑屏幕是700像素的门限以上,但这个vaule是可以改变的。心不是一个手机或平板电脑,在那里,超过700像素(至少我不知道任何),因此所有的移动divices会重定向到您的移动网站。

替代方案 世界大学联合会移动检测, ,一个用于检测的 PHP 类:

  • 药片
  • 移动的
  • IOs
  • 安卓
  • 浏览器
  • 以及更多

所以万一 世界大学联合会 没有满足您的需要,您可以随时检查一下。

与Skaffman达成一致,另一个设备数据库是的DeviceAtlas 。你必须为此付出代价,虽然一个

如果设备不支持JS,最好考虑Server端解决方案,并且 世界大学联合会 API 可以帮助朝这个方向发展。

有时我们想避免这种方法的问题(例如反向代理缓存页面并且不让重定向到移动版本),或者我们需要一个快速的解决方案,因为现在几乎所有最新的设备都支持 JS。

因此,我编写了一个名为“redirection_mobile.js”的 JS 脚本,该脚本会检测浏览器的用户代理,并在您从移动设备访问网站时重定向到网站的移动版本。

在某些情况下,您想要从移动设备重定向到桌面版本(例如使用链接“转到主站点”),脚本将处理该问题,一旦您完成会话,您将再次访问移动版本。

你可以在这里找到 github 上的源代码 http://github.com/sebarmeli/JS-Redirection-Mobile-Site 您可以在我的一篇文章中阅读更多详细信息:

http://blog.sebarmeli.com/2010/11/02/how-to-redirect-your-site-to-a-mobile-version-through-javascript/

简单:

<link rel="alternate" media="handheld" href="WEBSITE HERE">

把在所述头部部分。

这里是工作溶液

RewriteEngine On
RewriteBase /

#http://stackoverflow.com/questions/3680463/mobile-redirect-using-htaccess
# 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}       !^$
RewriteCond %{QUERY_STRING} !^mobile=0(?:&|$)
# 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.yourdomain.com%{REQUEST_URI} [R,L]

# Go back to full site
RewriteCond %{HTTP_HOST} ^m\.
RewriteCond %{QUERY_STRING} (?:^|&)mobile=0(?:&|$)
RewriteRule ^ http://yourdomain.com%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [NC,L]

RewriteRule ^.*$ index.php [NC,L]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top