跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

前端实现 HTTPS 强制跳转与移动端域名自动适配

前端通过 JavaScript 实现 HTTPS 协议强制跳转及 PC 与移动端域名自动适配。逻辑包含:检测协议非 HTTPS 时重定向至 HTTPS;HTTPS 状态下,若移动端访问 www 域名则跳转至 m 域名。代码封装为独立函数并置于页面头部尽早执行,避免无效渲染。示例演示了安卓手机访问 http 域名时的完整跳转流程。

栈溢出发布于 2026/2/23更新于 2026/7/2043 浏览
前端实现 HTTPS 强制跳转与移动端域名自动适配

需求背景

一个标准的企业级网站通常会有 PC 端(www.xxx.com)和移动端(m.xxx.com)两个域名,同时需要确保全站使用 HTTPS 协议。我们需要实现:

  1. 无论用户访问的是 HTTP 还是 HTTPS 协议,最终都强制跳转到 HTTPS。
  2. PC 端访问 www 域名保持不变,移动端访问 www 域名自动跳转到 m 域名。
  3. 已在 m 域名下的访问不做任何跳转,非 www 开头的域名也不处理。

执行时机

建议将该函数放在页面标签内尽早执行,最好在其他脚本加载前完成跳转,避免页面无效渲染。

代码实现

// 封装成独立函数,提高可读性和复用性
function redirectToHttpsAndMobile() {
    // 1. 定义常量,便于维护
    const TARGET_PROTOCOL = "https:";
    const MOBILE_DOMAIN_PREFIX = "m.";
    const PC_DOMAIN_PREFIX = "www.";
    
    // 移动端设备检测正则(覆盖主流移动端)
    const MOBILE_REGEX = /windows mobile|android|ucweb|iphone|ipad|ipod|mqqbrowser|harmony|miui|vivo|oppo/i;
    
    // 第一步:强制 HTTPS 协议(仅在非 HTTPS 时执行)
    if (window.location.protocol !== TARGET_PROTOCOL) {
        // 拼接 HTTPS URL(避免直接拼接出错)
        const httpsUrl = `${TARGET_PROTOCOL}//${window.location.host}${window.location.pathname}${window.location.search}${window.location.hash}`;
        // 使用 replace 避免返回历史记录,提升用户体验
        window.location.replace(httpsUrl);
        // 终止函数执行,避免后续逻辑重复运行
        return;
    }
    
    // 第二步:移动端域名跳转(仅 HTTPS 下执行)
    const currentHost = window.location.host; // 仅获取域名部分(如 www.xxx.com)
    
    // 跳过条件:1. 已是移动端域名 2. 非 www 开头的域名(避免误改)
    if (currentHost.startsWith(MOBILE_DOMAIN_PREFIX) || !currentHost.startsWith(PC_DOMAIN_PREFIX)) {
        return;
    }
    
    // 精准替换域名(仅替换 www.为 m.,不影响 URL 其他部分)
    const mobileHost = currentHost.replace(PC_DOMAIN_PREFIX, MOBILE_DOMAIN_PREFIX);
    const mobileUrl = window.location.href.replace(currentHost, mobileHost);
    
    // 检测是否为移动端设备
    const isMobile = MOBILE_REGEX.test(navigator.userAgent.toLowerCase());
    if (isMobile) {
        window.location.replace(mobileUrl);
    }
}

// 执行函数
redirectToHttpsAndMobile();

基础概念

代码片段含义示例(以 http://www.xxx.com/test?a=1 为例)
window.location.protocol当前页面的协议(带冒号)http:
window.location.href完整的页面 URLhttp://www.xxx.com/test?a=1
substring(n)截取字符串从第 n 位开始的部分href.substring(5) → //www.xxx.com/test?a=1
replace("A","B")替换字符串中第一个匹配的 A 为 B替换后 → http://m.xxx.com/test?a=1
navigator.userAgent浏览器 / 设备的标识字符串,用于判断设备类型安卓手机的 UA 可能包含 'android'

执行逻辑示例

以「用户用安卓手机访问 http://www.xxx.com」为例,代码执行流程: 检测到协议是 http: ≠ https:,执行跳转 → 跳转到 https://www.xxx.com; 页面重新加载后,再次执行代码: 第一步检测协议是 https:,不执行跳转; 生成移动端 URL:https://m.xxx.com; 检测 UA 包含 'android',执行跳转 → 最终跳转到 https://m.xxx.com。

目录

  1. 需求背景
  2. 执行时机
  3. 代码实现
  4. 基础概念
  5. 执行逻辑示例
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 工业制造企业数字化转型:基于AIGC的社媒矩阵运营系统重构
  • Ubuntu 24.04 部署 OpenClaw 本地 AI 助手指南
  • 基于宝塔面板在阿里云部署 Java+React 项目
  • 2026 年主流 AI 编程工具对比:GitHub Copilot、Cursor 与 Codeium 选型指南
  • OpenClaw 开源 AI 智能体项目精选与部署指南
  • GitHub Copilot SDK 与云原生多智能体系统实践
  • 开源大型语言模型(LLM)入门指南:核心概念与部署要点
  • LeetCode 两两交换链表中的节点:Java 递归与迭代解法
  • AI 绘画精讲与 AIGC 时代游戏美术设计:从入门到精通
  • Nano Banana AI 绘图中文模糊问题:使用 Seedream 4.5 重渲染方案
  • AI 提示词工程实战:从模糊指令到精准输出的进阶指南
  • Transformer 时序数据建模与实现详解
  • 前端加密(常用加密方式及使用)
  • Stable Diffusion 基础教程:部署、精准控制与风格训练
  • Python 与 PyCharm 安装配置完整教程
  • C++ 继承机制详解:从基础到多继承
  • ZeroClaw:零开销、零妥协的 Rust 原生 AI 助手基础设施
  • 多种编程语言数组遍历实现对比
  • 一天一个开源项目(第43篇):Star-Office-UI - 像素风格的 AI 办公室看板,让 AI 助手的工作状态可视化
  • OpenClaw 集成百度网页搜索技能:安装与配置

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online