Apache通过.htaccess(rewrite)判断手机移动端与电脑PC端的互相跳转
一、首先要确实服务器是使用apache服务来提供Web服务的,并加载了mod_rewrite模块,具体加载mod_rewrite模块方法,网上有详细教程,请自行百度。
二、让apache服务器支持.htaccess。只要简单修改一下apache的httpd.conf配置就可以让APACHE支 持.htaccess了:AllowOverride None 修改为: AllowOverride All
三、启用.htaccess后,在现有普通网站基础上,再新建一个手机网站,也可以在现有网站根目录下新建子目录,如现有网站为www.baidu.com,新建手机站为m.baidu.com,或者新建子目录方式:www.baidu.com/m/普通站和手机站使用相同数据库,程序相同,只是显示用的模板不同。
四、在普通网站根目录下新建 .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。
五、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。
六、电脑访问手机网站时跳转:
手机网站根目录下新建 .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]
这样,在手机网站下,如果是电脑用户访问了,就自动跳转到普通网站,让用户更适合浏览。
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
- ● Win10Mysql8初始密码丢失,初始化又不显示密码
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题