最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 如何在 Location 块中配置 return 指令实现永久 301 域名重定向
时间:2026-09-04 19:10:49 编辑:袖梨 来源:一聚教程网
域名跳转必须在server块中用return 301实现,因server_name才能准确识别请求域名;location仅匹配路径,无法处理跨域跳转,除非是单页面精确路径跳转(如location = /old.html { return 301 /new.html; })。
直接在 location 块里用 return 301 实现域名重定向,不推荐且通常无效——因为 location 匹配的是请求路径(如 /old.html),不是整个域名;而域名跳转必须基于 server_name 判断,应在 server 块层面处理。
真正可靠的做法是:把域名级 301 跳转写在独立的 server 块中,而不是 location 里。下面说清楚怎么操作、为什么不能放 location,以及例外场景怎么处理。
域名跳转必须放在 server 块里
Nginx 的 server_name 指令决定了哪个 server 块响应某个域名的请求。只有在这里,你才能准确捕获“用户访问的是 old-site.com”这件事。
- ✅ 正确位置:
server { listen 80; server_name old-site.com www.old-site.com; return 301 https://new-site.com$request_uri; } - ❌ 错误做法:在
location / { ... }里写return 301—— 这只能跳转路径,无法改变 Host 头或协议,浏览器地址栏仍显示旧域名。
原因很简单:location 是路径匹配器,它不知道请求来自哪个域名(除非配合 if ($host = ...),但 if 在 location 中受限且易出错)。
单页面路径跳转才适合用 location + return
如果你只想跳转某一个 URL 路径(比如 /old.html → /new.html),这时 location 才是合适位置:
location = /old.html {return 301 /new.html;}
注意:
-
=表示精确匹配,避免/old.html?x=1或/old.html-bak被误匹配 - 目标路径不带协议和域名,属于内部重定向(浏览器地址栏会变,但仍是同域名)
- 若需跨域名跳转,这里必须写完整 URL:
return 301 https://new-site.com/new.html;
多域名统一跳转的简洁写法
多个旧域名指向同一个新站,不用每个都写一个 server 块:
server {listen 80;server_name old1.com old2.com www.old1.com example-old.net;return 301 https://www.new-site.com$request_uri;}
- 所有列出的域名命中即跳转
-
$request_uri自动保留原始路径和查询参数(如/blog?id=123→/blog?id=123) - 不要用
$host,防止 IP 直连或非法 Host 头导致跳转到https:///xxx
HTTPS 跳转要单独配 80 端口 server 块
别试图在监听 443 的 HTTPS server 块里加 listen 80 —— Nginx 不允许混用协议。
正确结构是两套 server:
- 一套只
listen 80,负责把所有 HTTP 请求 301 到 HTTPS - 另一套
listen 443 ssl,提供真正的 HTTPS 服务
# HTTP 入口,仅跳转server {listen 80;server_name example.com www.example.com;return 301 https://www.example.com$request_uri;}# HTTPS 服务,实际响应内容server {listen 443 ssl http2;server_name www.example.com;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/key.pem;# ... 其他配置}
配置完记得:
-
nginx -t检查语法 -
nginx -s reload生效 - 用
curl -I http://old-site.com确认返回301 Moved Permanently和正确的Location头
相关文章
- 大话三国破解版无限元宝版—破解版内置菜单下载地址 09-04
- 洛克王国世界怎么捕捉精灵 精灵宠物捕捉方法操作步骤 09-04
- 在 Jenkins 中存储凭据 09-04
- Excel怎么做-执行顺序和关键限制 09-04
- 谷歌地球网页版官网入口在哪讲了什么-主要信息和内容重点 09-04
- geogebra在线使用官网怎么做-执行顺序和关键限制 09-04