nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > nginx 域名跳转

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

作者:新节

本文介绍了Nginx实现域名跳转的几种常用方式,包括301永久重定向,302临时重定向,HTTPS强制跳转,正则匹配跳转,具有一定的参考价值,感兴趣的可以了解一下

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

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

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

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

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

server {
    listen 80;
    server_name old.com;

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

📌 说明:

示例效果:访问 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;
}

📌 说明:

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 配置跳转,因为:

常见实践

7. 常见问题

1. 301 和 302 的区别

用户体验 来看:

底层逻辑 来看:

📌 总结:

2.return 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

✅ 所以:

到此这篇关于nginx实现域名跳转的几种方式的文章就介绍到这了,更多相关nginx 域名跳转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文