it-swarm.cn

如何将iPhone / Android浏览器导向m.example.com?

我有一些特殊的编码只适用于HTML5浏览器(简单的地理位置)。我想将iPhone和Android用户重定向到我网站的m.example.com版本。最好的方法是怎样做的?

8
JoshFinnie

您可以使用UserAgent检测,也可以使用jQuery.support()。由于您正在寻找特定的功能,您可以将两者结合起来以获得您想要的功能。

UserAgent可能实际上是您最好的选择。使用.htaccess文件执行此操作以减少您的http请求,并可能在重定向之前闪烁您的主站点,以防缓慢连接或缓慢的javascript性能。

您可以在 维基百科页面 上查看(大多数)详尽的移动用户代理列表。正如您所看到的,您可以在正则表达式中查找制造商和版本之间的相似之处。

2
helloandre

你的问题涉及两个部分..重定向和html5兼容性。

重定向

我正在使用以下.htaccess:

RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "mini|nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "portalmmm|blazer|avantgo|danger|Palm|series60|palmsource|pocketpc" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|iPhone|Android" [NC]
RewriteRule ^(.*)$ http://m.example.com/ [L,R=302]

对于php你可以使用这个库: http://detectmobilebrowsers.mobi/ ...但我强烈建议使用htaccess来处理时间和安全性。

您可以在此处找到一些其他示例

http://ohryan.ca/blog/2009/02/18/revisiting-mobile-redirection-using-htaccess-rewrite-rules/

浏览器功能

由于我的Android手机对地理位置代码的html5没有问题。您可以考虑使用 Modernizr Javascript Library 来检测访问您网页的客户端浏览器的功能。

优秀的 HTML5样板 模板正在使用开箱即用的modernizr来支持这种需求。

我的意见是:我建议使用htaccess方法除了由modernizr支持的最近的手机和浏览器之外的一切,让Android和iPhone用户由Modernizr检查html5功能支持并重定向“rest”在你的“没有地理定位“版本。

Modernizr例子:

 if (Modernizr.geolocation) {
    // do stuff
 }else{
    // propose mobile version 
 }

希望这可以帮助

2
jflaflamme

如果您使用PHP进行编码,则可以使用$_SERVER['HTTP_USER_AGENT']来检查UserAgent标头,该标头几乎由任何主要移动设备发送到PHP脚本。然后只需将此标题的值与substr fuction进行比较即可。

例如,Apple设备将始终具有'iphone'或'ipad'子字符串; Android设备将始终拥有'Android'。几乎每个移动设备都会在此标头中列出“移动”子字符串。

1
Paul Pi