将移动设备重定向到我网站的备用版本

时间:2009-07-13 09:56:13

标签: html redirect user-agent mobile-website

我们已经为移动设备准备了替代版网站。我们服务的内容不同,效果也很好。

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

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

10 个答案:

答案 0 :(得分:24)

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

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

答案 1 :(得分:8)

media =“掌上电脑”不适用于现代智能手机,例如假装是桌面浏览器的iphone(使用屏幕媒体类型)。

http://detectmobilebrowser.com/ 免费&开源,有一个全面的移动用户代理检查器提供多种语言 - javascript,php,asp.net,ruby等。

答案 2 :(得分:5)

如果您希望使用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");
}

答案 3 :(得分:2)

我认为没有一种好的/优雅的方法可以检测用户是否激活了他的javascript。

IMO,最好的是列出用户代理:here是一个用户代理列表,看起来非常完整(用法语,很遗憾)。

答案 4 :(得分:2)

将它放在标题中:

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

几乎每个人的计算机屏幕都超过了700px的门槛,但这个vaule可以改变。没有一个手机或平板电脑超过700px(至少我不知道任何)所以所有移动设备将重定向到您的移动网站。

答案 5 :(得分:2)

WURFL的替代是Mobile Detect,一个用于检测的PHP类:

  • 平板
  • 移动
  • IOS
  • 的Android
  • 浏览器
  • 还有更多

因此,如果WURFL无法满足您的需求,您可以随时查看。

答案 6 :(得分:0)

同意Skaffman,另一个设备数据库是DeviceAtlas。你必须支付这笔费用。

答案 7 :(得分:0)

简单:

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

把它放在头部。

答案 8 :(得分:0)

如果设备不支持JS,最好考虑服务器端解决方案, WURFL API可以帮助实现这一目标。

有时我们希望避免使用这种方法的问题(例如反向代理缓存页面而不允许重定向到移动版本),或者我们需要快速解决方案,因为我们知道现在几乎所有最近的设备都支持JS。 / p>

出于这个原因,我编写了一个名为“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/

答案 9 :(得分:0)

这是可行的解决方案

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]