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

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

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

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

这两种办法设置的重定向规则其实基本上都是一样的,只是设置的地方不同,

重定向设置的代码例子:
RewriteCond %{HTTP_HOST} ^www\.zhi23\.com(.*)$
RewriteCond %{HTTP_REFERER} !^http\:\/\/(m|www)\.zhi23\.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.zhi23.com/$1 [L,R=302]
注释:
第一句通过是HTTP_HOST判断网站的域名,看是否就是要判断的网站;
第二句是通过HTTP_REFERER判断来源路径,如果是自身传统网站或手机网站就不跳转;
第三句开始是通过HTTP_USER_AGENT来判断浏览者所用设备是否为手持设备,其中有一句是通过HTTP_ACCEPT判断代码类型,并在开头和结尾排除掉ipad和macintosh;
最后一句是302重定向到相应的手机版页面。
实际使用中可能会根据具体情况对上面的代码进行一些修改,最好能理解和掌握Apache的Rewrite规则才好灵活运用。
以上的例子可以这样验证:用手机浏览“问版主电脑版”(http://www.zhi23.com),看是否自动跳转到“问版主手机版”(http://m.zhi23.com)。

下面进一步介绍了如何使用apache的mod_rewrite模块修改.htaccess文件判断访问终端类型并重定向的方法。首先要确实服务器是使用apache服务来提供Web服务的,并加载了mod_rewrite模块,具体加载mod_rewrite模块方法,网上有详细教程,请自行sou123.win搜索。

让apache服务器支持.htaccess

只要简单修改一下apache的httpd.conf配置就可以让APACHE支 持.htaccess了:AllowOverride None    修改为: AllowOverride All

***在普通网站根目录下新建 .htaccess 文件:

# 将 RewriteEngine 模式打开RewriteEngine OnRewriteBase /

# Rewrite 规则 判断用户浏览器类型,如果是手机就跳转到手机网站

RewriteCond %{HTTP_HOST} ^www\.zhi23\.com(.*)$

RewriteCond %{HTTP_USER_AGENT} "(baidu.Transcoder|mini|android|blackberry|googlebot-mobile|iemobile|Mobile|ipad|iphone|ipod|opera mobile|palmos|webos|ucweb|Windows Phone|Symbian|hpwOS)" [NC]

RewriteRule ^(.*)$ http://m.zhi23.com/$1 [L,R=302]

上面的代码,自动判断手机用户然后跳转到手机网站,并带有相同的参数,如手机用户输入的网址是http://www.baidu.com/index.php?go=1那么系统跳转时会自动加上参数http://m.baidu.com/index.php?go=1。

这里需要说明下,因为RewriteRule ^(.*)$ http://m.baidu.com/$1 [L,R=302]的加入,如果手机页面中有需要访问非手机网站资源时,如其他子目录或二级网内容,就需要设置相应正则排除指定网站或文件,如: RewriteRule ^(.*?(?<!jpg)$) http://m.baidu.com/$1 [L,R=302],就不会造成手机访问非手机页面中jpg图片时出现无法访问的问题了。也可以通过判断来源是什么域名来跳转,如:
RewriteCond %{HTTP_HOST} !^img.baidu.com [NC]

RewriteCond %{HTTP_HOST} !^ditu.baidu.com [NC]

RewriteCond %{HTTP_USER_AGENT} "(baidu.Transcoder|mini|android|blackberry|googlebot-mobile|iemobile|Mobile|ipad|iphone|ipod|opera mobile|palmos|webos|ucweb|Windows Phone|Symbian|hpwOS)" [NC]RewriteRule ^(.*)$ http://m.baidu.com/$1 [L,R=302]
上面的意思就是,如果不是访问img.baidu.com,ditu.baidu.com的手机用户才跳转到m.badu.com。

apache通过.htaccess(rewrite)判断手机电脑跳转
***电脑访问手机网站时跳转:
手机网站根目录下新建 .htaccess 文件:
# 将 RewriteEngine 模式打开

RewriteEngine OnRewriteBase /

# Rewrite 规则 判断用户浏览器类型,如果是电脑用户就跳转到普通网站

RewriteCond %{HTTP_USER_AGENT} "!(baidu.Transcoder|mini|android|blackberry|googlebot-mobile|iemobile|Mobile|ipad|iphone|ipod|opera mobile|palmos|webos|ucweb|Windows Phone|Symbian|hpwOS)" [NC]

RewriteRule ^(.*)$ http://www.baidu.com/$1 [L,R=302]
这样,在手机网站下,如果是电脑用户访问了,就自动跳转到普通网站,让用户更适合浏览。

Tips: 
[NC]的意思 即不分大小写 
[R]的意思 重定向 
[F]的意思 禁止访问 
[L]的意思 这是最后一条规则,exit

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

关于301 重定向, 看 《通过htaccess实现301重定向常见的方法

http://blog.csdn.net/qikexun/article/details/50896019

我在配置的时候是将我项目的.htaccess文件复制到官网指定文件夹,增加了:

下面内容,admin为域名下的一个文件夹,测试可以实现(手机访问jiankang.test.com时可以自动跳转到admin下)
注:是将.htaccess文件放在了网站指定目录下 (是将.htaccess文件放在域名的html文件夹下,通过html 跳转至admin)

RewriteCond %{HTTP_USER_AGENT} "(baidu.Transcoder|mini|android|blackberry|googlebot-mobile|iemobile|Mobile|ipad|iphone|ipod|opera mobile|palmos|webos|ucweb|Windows Phone|Symbian|hpwOS)" [NC]
RewriteRule ^(.*)$ http://jiankang.test.com/admin/$1 [L,R=302]

apache通过.htaccess(rewrite)判断手机电脑跳转-手机用户重定向到手机版的更多相关文章

  1. Apache Rewrite实现URL的跳转和域名跳转

    Apache Rewrite实现URL的跳转和域名跳转   Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级的 (.h ...

  2. 3种方法判断手机浏览器跳转WAP手机网站

    随着移动设备的普及,企业的网络宣传已经不能局限在PC端,而需要同时在移动端有所建树.对于公司网站来说,以前都是做的PC端的,当然手机等移动端也可以访问,但是用户体验肯定不如完全适合的手机端来的方便.我 ...

  3. JS判断手机访问跳转到手机站

    这里提供了六种让手机端访问网站跳转到手机端的方法: 第一种: <script> if(navigator.platform.indexOf('Win32')!=-1){ //pc //wi ...

  4. js判断是否手机自动跳转移动端

    写法一: {literal} <script> //判断是否手机自动跳转 var browser={versions:function(){var u=navigator.userAgen ...

  5. apache环境.htaccess设置301跳转及常用.htaccess技巧整理

    apache环境.htaccess设置301跳转及常用.htaccess技巧整理 无论是Nginx,还是Apache都各自有优势,对于我们普通用户而言基本上也没有多大的区别.在虚拟主机环境中,基本上都 ...

  6. 通过js判断手机访问跳转到手机站

    第一种方法: <script> ){ //pc //window.location.href="电脑网址"; }else{ //shouji window.locati ...

  7. windows apache开启url rewrite

    加载Rewrite模块: 在conf目录下httpd.conf中找到 LoadModule rewrite_module modules/mod_rewrite.so 这句,去掉前边的注释符号“#”, ...

  8. Apache之.htaccess备忘录(二)

    博主热衷各种互联网技术,常啰嗦,时常伴有强迫症,常更新,觉得文章对你有帮助的可以关注我. 转载请注明"深蓝的镰刀" 书接上回,<Apache之.htaccess备忘录(一)& ...

  9. apache上.htaccess转向nginx上配置.htaccess伪静态规则

    nginx上配置.htaccess伪静态规则 在apache上.htaccess转向,只要apache编译的时候指明支持rewrite模块即可. 但是换到nginx上方法会有不同,有人说把.htacc ...

随机推荐

  1. [SHOI2013]发微博

    Description 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ​ ! x 表示用户x发了一条微博: ​ + x y 表示用户x ...

  2. eclipse向上/下复制一行(或者多行)的快捷键失效的基本解决方法

    在eclipse中,快捷键Ctrl+Alt+↓是向下复制选中的行,快捷键Ctrl+Alt+↑是向上复制选中的行. 这两个快捷键也是我常用的快捷键之一,以前也遇到失效. 所以现在记录一个解决的方法: 在 ...

  3. DIKW:数据、信息、知识、智慧的金字塔层次体系

    http://www.ciotimes.com/ProCase/85417.html 前言 知识对于个人.组织的重要性已经不言而喻.可以说,管理与应用知识的能力已经成为企业的核心竞争力. 知识如此重要 ...

  4. XML DOM解析 基础概念

    DOM和SAX W3C制定了一套书写XML分析器的标准接口规范——DOM. 除此以外,XML_DEV邮件列表中的成员根据应用的需求也自发地定义了一套对XML文档进行操作的接口规范——SAX. 这两种接 ...

  5. JAVA 泛型意淫之旅(二)

    编译器如何处理泛型 泛型类编译后长什么样? 接上文,JAVA 泛型意淫之旅1,成功迎娶白富美后,终于迎来了最振奋人心的一刻:造娃!造男娃还是造女娃?对于我们程序猿来说,谁还在乎是男娃女娃,只要是自己的 ...

  6. "下载"文件夹的desktop.ini

    下载 [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21798 IconResource=%S ...

  7. angularJS中directive父子组件的数据交互

    angularJS中directive父子组件的数据交互 1. 使用共享 scope 的时候,可以直接从父 scope 中共享属性.使用隔离 scope 的时候,无法从父 scope 中共享属性.在 ...

  8. L133

    The U.S. Food and Drug Administration is considering a ban on flavorede-cigarettes in response to an ...

  9. VGGNet网络结构

    深度神经网络一般由卷积部分和全连接部分构成.卷积部分一般包含卷积(可以有多个不同尺寸的核级联组成).池化.Dropout等,其中Dropout层必须放在池化之后.全连接部分一般最多包含2到3个全连接, ...

  10. Ubuntu+Rmarkdown的中文slides实现(附GitHub template)

    这两天要做毕业论文的答辩slides,搜Rmarkdown中文slides的时候百度到了自己两年前的博客 R+markdown+LaTeX 中文编译解决方案.讲真我一开始还真没有认出来,一看这文风和博 ...