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

使用网站构建的程序(例如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]

转载于:https://www.cnblogs.com/lvfish/p/9364243.html

apache通过.htaccess(rewrite)判断手机电脑跳转-手机用户重定向到手机版相关推荐

  1. 手机电脑同屏_骚操作!手机秒变触摸电脑、扩展屏幕!

    THE START 小编的手机被搞报废了,所以呢就想怎么把闲置的手机利用起来,就有了今天这篇推送,小伙伴赶紧把旧手机重新拿起来吧!小编不回收旧手机,旧手机也不用拿去换洗脸盆了,可以用来当电脑屏幕了!这 ...

  2. 华为linux系统能不能一键碰传,怎么实现华为手机电脑间的一碰互 华为手机电脑一碰互传 - 云骑士一键重装系统...

    华为手机如何实现和电脑一碰互传?下面我们一起来了解下! Huawei Share,这是华为设备中的一项"黑科技",只要将手机与电脑轻轻触碰,即可快速传输图片.视频.文档,传输速率达 ...

  3. html5特效 手机震动,html5 可以让用户按一下手机键盘手机震动一下吗

    HTML 按我手机会震动 CSS .shock{       font-size: 15px;       font-weight: bold;       color: red;   } JS // ...

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

    为什么80%的码农都做不了架构师?>>>    1.Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基 于服务器级的(httpd.conf)和目录级 ...

  5. javascript判断浏览器和终端类型,js如何区分手机、电脑终端和浏览器

    判断浏览器类型 复制代码代码如下: if ( window.sidebar && "object" == typeof( window.sidebar ) & ...

  6. JS判断是电脑浏览器还是手机浏览器?

    JS判断是电脑浏览器还是手机浏览器? <script type=text/javascript>document.write('你的浏览器标识:',navigator.userAgent, ...

  7. 服务器判断手机还是电脑端访问网站,asp下通过HTTP_USER_AGENT判断用户是从手机上访问,还是电脑IE上访问...

    通过HTTP_USER_AGENT判断用户是从手机上访问,还是电脑IE上访问. asp代码片段:主要使用了正则匹配手机环境,大家可以补充手机平台. 复制代码代码如下: set regex = new ...

  8. html5 判断手机电脑,H5_0006:JS判断PC,平板,手机平台的方法

    //平台.设备和操作系统 var system = { win: false, mac: false, xll: false, ipad: false }; //检测平台 var p = naviga ...

  9. 【JS】【19】使用Jquery判断是电脑或手机或微信浏览器访问

    正文: //检测平台 var p = navigator.platform;system.win = p.indexOf("Win") == 0;system.mac = p.in ...

最新文章

  1. java备忘录模式应用场景_图解Java设计模式之备忘录模式
  2. python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...
  3. 纯php实现定时器任务,純PHP實現定時器任務(Timer)
  4. neural network ppt for support vector machine
  5. 计算机创建快捷方式w10,win10无法创建快捷方式,win10发送快捷方式磁盘满了
  6. 文献学习(part49)--机器学习面临的挑战
  7. java 操作序列_JAVA序列化操作详解
  8. mongod启动问题
  9. 晶圆代工28nm制程市场动向
  10. RHCE课程-RH253Linux服务器架设笔记五-APACHE服务器配置(2)
  11. 洛谷 P4099 SAO —— 树形dp
  12. 安科瑞ACY100油烟浓度在线监控仪在浙江省某市餐饮油烟监测治理项目中的应用
  13. 自定义View之Layout方法详解
  14. 打开Word提示向程序发送命令时出现问题怎么办
  15. 运营能力提升学习(一)了解运营是什么
  16. 一加6手机图片中的文字如何识别?
  17. Marshmallow及ORM小结
  18. 有关VScode 配置MinGW32_9.2.0+OpenGL+GLFW+GLAD
  19. CAD填充颜色透明颜色设置
  20. seamless clone

热门文章

  1. Java小小RPG游戏第六版(基于第五版优化)
  2. Processing —— 简易绘画系统
  3. 数据结构与算法学习--跳表
  4. 计算机二级C语言233网校,二级计算机考点
  5. 跑通、ILRuntime,全程傻瓜式指导。
  6. 物联网工程实践日报表
  7. 洛谷 P3195 [HNOI2008]玩具装箱 —— 斜率优化
  8. CSS:仅对子盒子修饰样式,三种让其在父盒子中水平垂直居中的方法及其优缺点(父盒子宽高未知)
  9. 按揭买两套房,保证天天打鸡血一样
  10. 电子海图开发第四十六篇 , AIS数据的解析(共一百篇)