讲师中心 微信公众号
AI工具推荐 视频效率加速

Nginx 中 301 重定向怎么将带参数的旧链接完美映射到新版伪静态路径

冬伟大大_3077

冬伟大大_3077

发布时间:2026-08-30 10:26:25

|

753人浏览过

|

来源于php中文网

原创

关键在于用Nginx正则捕获参数并301跳转至伪静态路径:如rewrite ^/product.php?id=(\d+).*$ /item/$1 permanent;优先用map或rewrite直接匹配URI,避免if嵌套;注意$uri、$args、$request_uri区别,测试用curl -I验证响应头。

nginx 中 301 重定向怎么将带参数的旧链接完美映射到新版伪静态路径

要将带参数的旧链接(如 /product.php?id=123&ref=abc)完美映射到新版伪静态路径(如 /item/123),关键不是简单跳转,而是提取参数、构造新路径、保留必要上下文、避免丢参或循环。Nginx 本身不解析 PHP 查询参数,必须靠正则捕获 + rewrite 或 return 配合变量来实现。

用 rewrite 提取参数并生成伪静态路径

适用于旧 URL 含有可识别结构(如 ?id=数字),且新路径需基于该数字构建(如 /item/123):

  • 把规则写在 location / 或更精确的 location ~ \.php$ 块中(避免影响静态资源)
  • 用 rewrite 捕获 id 值,并用 permanent 发出 301
  • $args 可显式拼接其他参数(如需保留 ref),但伪静态路径通常不带查询串,建议只提关键 ID

示例配置:

server {
  listen 80;
  server_name old.com;
  location / {
    # 匹配 product.php?id=123&xxx
    rewrite ^/product\.php\?id=(\d+)(?:&.*)?$ /item/$1 permanent;
  }
}

用 return 301 + $request_uri 处理“参数即路径”的场景

如果旧链接参数本身就是路径语义(如 /page?id=about → 新版 /about),而你又不想用 rewrite,可用 map 预定义映射关系,再配合 return:

Nginx Config Linter
Nginx Config Linter

对 Nginx 配置文件进行语法检查、验证和安全、性能审计。

下载
  • 先在 http 块外层定义 map,把常见 id 值映射为路径别名
  • 在 location 中判断 $args 是否含目标参数,再用 return 301 跳转
  • 注意:不能在 if 中直接用 return(Nginx 官方不推荐),应改用 map + try_files 或 error_page 组合

精简安全做法(推荐):

map $args $new_path {
  default "";
  "id=about" "/about";
  "id=contact" "/contact";
  "id=products" "/products";
}

server {
  listen 80;
  server_name old.com;
  location = /page {
    if ($new_path) {
      return 301 $new_path;
    }
    return 404;
  }
}

保留原始参数并兼容 SEO 的折中方案

当新版伪静态路径仍需承载部分参数(如分页、筛选),但又想隐藏 .php 和 ?,可做两步处理:

  • 第一步:301 跳转时把 id=123&page=2 映射为 /item/123?page=2(仍带参数,但路径干净)
  • 第二步:后端或前端路由接管 /item/123,把 page=2 解析为状态,或由 Nginx 再次内部重写(非 301)到真实脚本
  • 避免在跳转中用 $host 或 $scheme 拼接,容易导致协议错乱;固定写 https://new.com 更稳妥

例如:

location ~ ^/product\.php$ {
  if ($args ~* "id=(\d+)") {
    set $id $1;
    rewrite ^.*$ /item/$id?$args permanent;
  }
}

必须避开的坑

这类映射最容易出错的地方不在语法,而在逻辑边界:

  • 不要用 if ($args ~ id=) 匹配后直接 rewrite,Nginx 中 if 在 location 内行为不可靠,优先用 map 或 rewrite 直接匹配 URI
  • $request_uri 含完整路径和参数,$uri 不含参数,$args 只含参数——三者别混用
  • 测试时用 curl -I http://old.com/product.php?id=123 看响应头是否为 301 且 Location: https://new.com/item/123
  • 上线前务必清浏览器和 CDN 缓存,否则 301 会被强缓存,改错也跳不回来

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

383

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3187

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

5825

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

561

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1476

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3918

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

122

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

437

2026.01.13

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn