apache通过.htaccess(rewrite)判断手机电脑跳转
1、首先要确实服务器是使用apache服务来提供Web服务的,并加载了mod_rewrite模块,具体加载mod_rewrite模块方法,网上有详细教程,请自行百度。
2、让apache服务器支持.htaccess只要简单修改一下apache的httpd.conf配置就可以让APACHE支 持.htaccess了:AllowOverride None修改为:AllowOverride All
3、启用.htaccess后,在现有普通网站基础上,再新建一个手机网站,也可以在现有网站根目录下新建子目录,如现有网站为www.baidu.com,新建手机站为m.baidu.com,或者新建子目录方式:www.baidu.com/m/普通站和手机站使用相同数据库,程序相同,只是显示用的模板不同。
4、***在普通网站根目录下新建 .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://m.baidu.com/$1 [L,R=302]上面的代码,自动判断手机用户然后跳转到手机网站,并带有相同的参数,如手机用户输入的网址是http://www.baidu.com/index.php?go=1那么系统跳转时会自动加上参数http://m.baidu.com/index.php?go=1。
5、这里需要说明下,因为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。
6、***电脑访问手机网站时跳转:手机网站根目录下新建 .htaccess 文件:# 将 RewriteEngine 模式打开RewriteEngine OnRewrit髫潋啜缅eBase /# 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]这样,在手机网站下,如果是电脑用户访问了,就自动跳转到普通网站,让用户更适合浏览。