您如何将iPhone / Android浏览器定向到m.example.com?


8

我有一些仅适用于HTML5浏览器的特殊编码(简单的地理位置信息)。我想将iPhone和Android用户重定向到我的网站的m.example.com版本。如何做到这一点的最佳方法?

Answers:


2

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

UserAgent实际上可能是您最好的选择。使用.htaccess文件执行此操作,以减少您的http请求,并在连接速度慢或JavaScript性能下降的情况下,在重定向之前刷新主站点。

您可以在Wikipedia页面上看到(主要是)详尽的移动用户代理列表。如您所见,可以在正则表达式中查找制造商和版本之间的相似之处。


3
与使用JS相比,在后端执行此操作非常可取,尤其是在移动设备的带宽非常狭窄的情况下。.htaccess方法是最好的选择,其次是PHP / ASP /任何后端方法
Mark Henderson 2010年

2

您的问题涉及两部分..重定向和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库来检测访问页面的客户端浏览器的功能。

出色的 HTML5样板模板开箱即用地使用了modernizr来满足这种需求。

我的意见是:我建议对htaccess方法使用除modernizr支持的最新手机和浏览器以外的所有内容,并让Modernizr检查android和iPhone用户是否支持html5功能,并重定向“无地理位置”版本上的“其余”。

Modernizr示例:

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

希望这可以帮助


1

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.