nginx - 实现域名跳转的几种方式

nginx - 实现域名跳转的几种方式

Nginx 实现域名跳转的几种方式

文章目录

在这里插入图片描述

在日常项目中,我们经常会遇到这样的需求或情况:

  • 访问 http://abc.com 时,强制跳到 https://www.abc.com,上面域名发生变化。
  • 旧域名 old.com 迁移到 new.com,用户访问旧域名时需要自动跳转。
  • 为了 SEO 统一入口,abc.comwww.abc.com 最终都要跳到同一个主域名。

对于域名跳转,我们可以在 Web 服务器层实现 也可以在 应用层中实现。下面我主要讲解在Web 服务层 Nginx中的实现方式。

这些场景在 Nginx 中都可以很优雅地实现,如下:

1. 301 永久重定向(推荐 SEO 场景)

如果网站更换了域名,或者需要强制统一入口,可以用 301 永久重定向。

server { listen 80; server_name old.com; # 永久重定向到新域名,并保留路径和参数 return 301 https://new.com$request_uri; } 

📌 说明:

  • 301:告诉浏览器和搜索引擎,这是永久跳转,搜索引擎会更新索引。
  • $request_uri:保留原路径和查询参数,比如 /about?from=123

示例效果:访问 http://old.com/about → 自动跳到 https://new.com/about

如下图演示所示:

我图中的演示是本地项目跳百度链接的 demo,实际项目中可以根据实际情况进行配置。

在这里插入图片描述

我本地项目的配置:

server { listen 80; server_name localhost; # 永久重定向到新域名 return 301 https://www.baidu.com; } 

2. 302 临时重定向(推荐活动页/短链场景)

如果只是临时跳转(例如活动推广、临时域名),可以使用 302

server { listen 80; server_name promo.old.com; # 临时跳转,不会影响搜索引擎索引 return 302 https://event.new.com$request_uri; } 

📌 说明:

  • 302:临时跳转,搜索引擎不会更新索引。
  • 常用于:活动页、营销短链。

3. 强制 HTTPS 跳转

为了保证安全,通常会把所有 HTTP 请求跳转到 HTTPS。

server { listen 80; server_name www.abc.com; return 301 https://www.abc.com$request_uri; } 

📌 效果:访问 http://www.abc.com/login → 自动跳到 https://www.abc.com/login

4. 去掉或强制 www

很多公司会要求所有请求统一成 www.abc.comabc.com,这样可以避免 SEO 重复收录。

去掉 www → 跳到裸域名

server { listen 80; server_name www.abc.com; return 301 https://abc.com$request_uri; } 

强制加 www

server { listen 80; server_name abc.com; return 301 https://www.abc.com$request_uri; } 

5. 正则匹配更复杂的跳转

有时候旧域名和新域名的路径不一样,可以用正则匹配。

server { listen 80; server_name old.com; location /oldpath/(.*) { return 301 https://new.com/newpath/$1; } } 

📌 效果:访问 http://old.com/oldpath/123 → 跳到 https://new.com/newpath/123

6. 总结

在日常项目中,推荐优先使用 Nginx 配置跳转,因为:

  • 配置简单,性能高,不会增加应用层压力。
  • 301/302 语义明确,对 SEO 和用户体验都更友好。
  • 可以灵活控制是否保留路径和参数。

常见实践

  • SEO & 域名统一 → 用 301
  • 活动页 & 临时跳转 → 用 302
  • 安全要求 → 强制 HTTPS

7. 常见问题

1. 301 和 302 的区别

用户体验 来看:

  • 浏览器访问时,都会立即跳转到新地址,看起来没什么差别(所以你测试时感觉一样)。

底层逻辑 来看:

  • 301 永久重定向
    • 告诉浏览器/搜索引擎:这个资源以后都在新地址了。
    • 浏览器可能会 缓存跳转规则,下次再访问旧域名时,直接跳过请求。
    • 搜索引擎会更新索引,把权重转移到新域名。
  • 302 临时重定向
    • 告诉浏览器/搜索引擎:这是临时跳转,原地址以后还可能恢复。
    • 浏览器一般不会长期缓存规则。
    • 搜索引擎不会把权重转移到新域名。

📌 总结:

  • SEO 场景(换域名/统一入口) → 用 301
  • 临时活动 / 营销页 → 用 302
  • 用户体验基本一样,主要区别在 缓存 & 搜索引擎

2. return 302 https://event.new.com$request_uri; 是否是固定写法

这不是唯一写法,但这是最常见、最简洁的写法。

  • return 302 → 表示返回一个 302 临时重定向 状态码。
  • https://event.new.com → 目标域名。
  • $request_uri → 变量,代表原始请求的路径和参数。
举个例子

用户请求:

http://promo.old.com/sale?from=wechat 

Nginx 配置:

return 302 https://event.new.com$request_uri; 

跳转结果:

https://event.new.com/sale?from=wechat 
只跳到首页(不保留路径参数)
return 302 https://event.new.com; 

👉 无论用户访问什么路径,都直接跳到 https://event.new.com 首页。

路径改写(比如 old → new)
location /oldpath/(.*) { return 302 https://event.new.com/newpath/$1; } 

👉 http://old.com/oldpath/123https://event.new.com/newpath/123

✅ 所以:

  • return 302 https://event.new.com$request_uri; 只是最常见的写法(保留路径和参数)。
  • 你完全可以根据项目需要,改成只跳首页、改写路径、或者换成 301。

👉点击进入我的网站

Read more

大数据新视界 -- Hive 数据仓库设计模式:星型与雪花型架构(2 - 16 - 3)

大数据新视界 -- Hive 数据仓库设计模式:星型与雪花型架构(2 - 16 - 3)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的博客,正是这样一个温暖美好的所在。在这里,你们不仅能够收获既富有趣味又极为实用的内容知识,还可以毫无拘束地畅所欲言,尽情分享自己独特的见解。我真诚地期待着你们的到来,愿我们能在这片小小的天地里共同成长,共同进步。💖💖💖 本博客的精华专栏: 1. 大数据新视界专栏系列:聚焦大数据,展技术应用,推动进步拓展新视野。 2. Java 大厂面试专栏系列:提供大厂面试的相关技巧和经验,助力求职。 3. Python 魅力之旅:探索数据与智能的奥秘专栏系列:走进 Python 的精彩天地,感受数据处理与智能应用的独特魅力。 4. Java 性能优化传奇之旅:铸就编程巅峰之路:如一把神奇钥匙,深度开启 JVM 等关键领域之门。丰富案例似璀璨繁星,引领你踏上编程巅峰的壮丽征程。 5. Java 虚拟机(

By Ne0inhk
Flutter 组件 dart_chromecast 的鸿蒙化适配实战 - 驾驭极致多屏交互大坝、实现 OpenHarmony 分布式端高性能投屏控制、设备发现与工业级多媒体协同核方案

Flutter 组件 dart_chromecast 的鸿蒙化适配实战 - 驾驭极致多屏交互大坝、实现 OpenHarmony 分布式端高性能投屏控制、设备发现与工业级多媒体协同核方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 dart_chromecast 的鸿蒙化适配实战 - 驾驭极致多屏交互大坝、实现 OpenHarmony 分布式端高性能投屏控制、设备发现与工业级多媒体协同核方案 前言 在鸿蒙(OpenHarmony)生态的分布式全场景交互、智慧屏协同或者是对跨设备媒体流转有极其严苛要求的 0308 批次影音娱乐应用中。“跨终端的设备发现速度与指令下发的极速响应维度”是衡量整个系统多设备协同能力的最终质量门禁。面对包含数十台局域网内的智能终端、动态变化的 mDNS 宣告报文、甚至是由于网络抖动产生的 0308 批次 MDNS 发现波次。如果仅仅依靠简单的“硬编码 IP 连接”或者是干瘪的 HTTP 轮询。不仅会导致在处理多设备投屏时让系统如同在逻辑废墟中盲人摸象。更会因为协议握手耗时过长,令用户在多屏切换时瞬间陷入卡顿甚至掉线的盲区。 我们需要一种“逻辑自动发现、协议深度对齐”的分布式资产流转艺术。 dart_chromecast

By Ne0inhk
SpringBoot + Vue 前后端分离项目实战:权限 + 工作流 + 报表

SpringBoot + Vue 前后端分离项目实战:权限 + 工作流 + 报表

✨道路是曲折的,前途是光明的! 📝 专注C/C++、Linux编程与人工智能领域,分享学习笔记! 🌟 感谢各位小伙伴的长期陪伴与支持,欢迎文末添加好友一起交流! 📚 目录 * 前言 * 一、项目背景与技术选型 * 二、系统架构设计 * 三、权限管理模块 * 四、工作流引擎集成 * 五、报表系统实现 * 六、核心代码实现 * 七、部署与运维 * 八、总结 前言 前后端分离架构已成为企业级应用开发的主流选择。本文将通过一个完整的企业管理系统实战项目,详细介绍如何使用 SpringBoot + Vue 技术栈,实现权限管理、工作流引擎和报表系统三大核心功能。 项目特色 * 前后端分离:RESTful API 设计,便于扩展和维护 * RBAC权限模型:细粒度的权限控制体系 * Flowable工作流:可视化流程设计与执行 * 动态报表:灵活配置的数据可视化方案 一、项目背景与技术选型 1.

By Ne0inhk
【保姆级】Node.js 最新安装教程,附环境变量配置

【保姆级】Node.js 最新安装教程,附环境变量配置

🎬 博主名称:超级苦力怕 🔥 个人专栏:《Java成长录》《AI 工具使用目录》 🚀 每一次思考都是突破的前奏,每一次复盘都是精进的开始! 安装目录 * 零基础安装 Node.js(Windows) * 1. 下载安装包 * 2. 安装程序 * 3. 环境配置(照做即可) * 3.1 新建两个文件夹 * 3.2 设置 npm 的全局目录和缓存 * 3.3 配环境变量 * 4. 测试(配置有没有生效) * 5. (推荐)设置 npm 国内镜像(下载更快) * 6. 拓充:常见问题 * 6.1 权限不足 (EPERM) 零基础安装 Node.js(

By Ne0inhk