当前位置

网站自动判断浏览者所用终端设备,手机用户重定向到手机版

James Qi 在 2012年6月7日 - 11:39 提交
内容摘要:为传统网站添加手机版以后,刚开始手机版可能没有什么流量,可以采取两个办法来促进: 在传统网站的页面中(一般是页面底部)添加切换到手机版的链接; 在服务器上设置自动判断来访者......

  为传统网站添加手机版以后,刚开始手机版可能没有什么流量,可以采取两个办法来促进:

  1. 在传统网站的页面中(一般是页面底部)添加切换到手机版的链接;
  2. 在服务器上设置自动判断来访者终端,手机用户就直接重定向到手机版。

  第一个办法做起来很简单,由用户自行点击切换,带来的流量是逐步的;而第二个办法需要在服务器上进行一些设置,自动切换,更自动提高手机用户体验,带来的流量也会更多、更快。

  自动判断、重定向的办法也有几种:

  1. 使用网站构建的程序(例如PHP)来判断、重定向;
  2. 使用服务器上的Web服务(例如Apache)来判断、重定向。

  在去年做的邮编库手机版中,采用了第一种办法,在原有MediaWiki搭建的邮编库网站中的部分页面嵌入了判断、重定向的PHP程序;近期做的网站添加手机版工作基本上是电脑版的每个网页都在手机版上有对应的页面,所以更适合采用第二种办法,也就是在Apache中设置重定向。

  在Apache中设置重定向有两个办法:

  1. 在网站的httpd.conf中设置重定向,适合有服务器完整权限的网站管理员;
  2. 在网站所在目录中修改.htaccess来设置,适合采用虚拟主机形式的网站管理员。

  这两种办法设置的重定向规则其实基本上都是一样的,只是设置的地方不同,下面给出重定向设置的代码例子:

RewriteCond %{HTTP_HOST}  ^www\.wenbanzhu\.com(.*)$
RewriteCond %{HTTP_REFERER} !^http\:\/\/(m|www)\.wenbanzhu\.com(.*)$
RewriteCond %{HTTP_USER_AGENT} !ipad [NC]
RewriteCond %{HTTP_ACCEPT} “text/vnd.wap.wml|application/vnd.wap.xhtml+xml” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “dang|doco|erics|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “wapp|wapr|webc|winw|winw|xda|xda-” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “up.browser|up.link|windowssce|iemobile|mini|mmp” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “symbian|midp|wap|phone|pocket|mobile|pda|psp” [NC]
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]
RewriteRule ^(.*)$ http://m.wenbanzhu.com/$1 [L,R=302]

  注释:

  1. 第一句通过是HTTP_HOST判断网站的域名,看是否就是要判断的网站;
  2. 第二句是通过HTTP_REFERER判断来源路径,如果是自身传统网站或手机网站就不跳转;
  3. 第三句开始是通过HTTP_USER_AGENT来判断浏览者所用设备是否为手持设备,其中有一句是通过HTTP_ACCEPT判断代码类型,并在开头和结尾排除掉ipad和macintosh;
  4. 最后一句是302重定向到相应的手机版页面。

  实际使用中可能会根据具体情况对上面的代码进行一些修改,最好能理解和掌握Apache的Rewrite规则才好灵活运用。

  以上的例子可以这样验证:用手机浏览“问版主电脑版”(http://www.wenbanzhu.com),看是否自动跳转到“问版主手机版”(http://m.wenbanzhu.com)。


  2013年5月补充:在判断跳转的条件中加入百度转码的user-agent: baidu.Transcoder,就可以让百度抓取时知道手机版的网址,并且不再自行进行转码。百度关于禁止转码的说明请看我的另外一篇博文《禁止百度WEB页面到手机WAP的转码》,用上面的办法就是百度说明中的办法C。

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符