Nginx 配置移动端和电脑端自动双向跳转

原文出处

https://shiwenyuan.github.io/post/ck05d728...

场景

域名 描述
pc端 www.phpblog.com.cn 用于pc端访问官网
移动端 m.phpblog.com.cn 用于移动端访问

需求

在移动端访问www.phpblog.com.cn和m.phpblog.com.cn都跳转到m.phpblog.com.cn

实现方案

判断客户端的设备类型
要想让网站适配PC和手机设备,首先要能做出准确的判断。HTTP请求的Header中的User-Agent可以区分客户端的浏览器类型,可以通过User-Agent来判断客户端的设备。

nginx原始配置

pc配置

server {
    listen       80;
    server_name  www.phpblog.com.cn;
    location / {
        root   www;
        index  index.html index.htm;
    }
}

移动端配置

server {
    listen       80;
    server_name  m.phpblog.com.cn;
    location / {
        root   m;
        index  index.html index.htm;
    }
}

m/index.html

20190904192816.png
Nginx 配置移动端和电脑端自动双向跳转

www/index.html

20190904192740.png
Nginx 配置移动端和电脑端自动双向跳转

nginx修改后配置

pc配置

server {
    listen       80;
    server_name  www.phpblog.com.cn;
    if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
            rewrite  ^(.*)    http://m.phpblog.com.cn$1 permanent;
        }
    location / {
        root   www;
        index  index.html index.htm;
    }
}

移动端配置

server {
    listen       80;
    server_name  m.phpblog.com.cn;
    if ($http_user_agent !~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
            rewrite  ^(.*)    http://www.phpblog.com.cn$1 permanent;
        }
    location / {
        root   m;
        index  index.html index.htm;
    }
}

此时在pc访问m.phpblog.com.cn
20190904193613.png
Nginx 配置移动端和电脑端自动双向跳转

可以看到有两次http请求第一次请求m.phpblog.com.cn发生了一次重定向 ,重定向到到了www.phpblog.com.cn

此时在pc访问www.phpblog.com.cn
20190904194050.png
Nginx 配置移动端和电脑端自动双向跳转

可以看到有一次http请求第一次请求

此时在移动端访问m.phpblog.com.cn
20190904194641.png
Nginx 配置移动端和电脑端自动双向跳转

可以看到有一次http请求第一次请求

此时在移动端访问www.phpblog.com.cn
20190904194334.png
Nginx 配置移动端和电脑端自动双向跳转

可以看到有两次http请求第一次请求www.phpblog.com.cn发生了一次重定向,,重定向到到了 m.phpblog.com.cn

原理

nginx 利用每次http请求过来的浏览器ua来区分是移动端还是pc,然后做相应的跳转

相关文档

百度的官方建议
国外开源的通过User-Agent区分PC和手机的解决方案

本作品采用 《CC 协议》,转载必须注明作者和本文链接
原创不易,转载请注明出处
本帖由系统于 1年前 自动加精
北行
12 人点赞
《L01 基础入门》
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3
yanthink

一般移动端还会有一个转换为PC端访问的功能,所以还需要加一些判断,比如 cookie

4年前 评论
北行

@yanthink 如果有cookie的话一般设置好cookie的作用域应该就行了吧,比如我这上面的两个域名,作用域设置成phpblog.com.cn 应该就好了,跳转适配的核心我觉得就是pc 和移动端的地址,就像我上面写的那个其实是有一个前提的,就是url要一致,就像m.phpblog.com.cn/user和www.phpblog.com.cn/user 要都是有效路径。 个人拙见,欢迎给出意见。嘿嘿

4年前 评论
beatles

上面那一段过滤 安卓机 UC 不支持

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
北行
php @ 滴滴
文章
6
粉丝
23
喜欢
368
收藏
760
排名:379
访问:2.5 万
私信
所有博文
博客标签
php
1
laravel
2
注释
1
社区赞助商
成为赞助商

深圳SEO优化公司商丘网站优化按天计费公司安阳网站推广系统多少钱大丰外贸网站建设报价宣城百度seo哪家好漯河网站优化排名价格大运关键词按天收费周口网络广告推广价格临汾企业网站建设推荐南澳网站优化排名公司仙桃SEO按天扣费报价衡阳网站建设哪家好随州品牌网站设计多少钱大浪百度竞价包年推广多少钱随州网站设计模板公司青岛设计公司网站报价泰州网站优化排名公司曲靖外贸网站制作襄樊百度网站优化公司宁德网站优化按天扣费哪家好营口外贸网站制作多少钱爱联百度关键词包年推广报价绥化SEO按效果付费多少钱鹤壁网站推广报价宿州模板推广公司崇左网站制作报价马鞍山网站seo优化多少钱德宏高端网站设计公司徐州网页设计价格海南百度竞价多少钱常州品牌网站设计多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化