直接用 return 301 配合正则匹配可实现 .htm 到 .html 的永久跳转,无需 rewrite,性能高且逻辑清晰;需在 location 块中用 location ~ .htm$ 匹配并 return 301 $scheme://$host$uri.html$request_args,确保参数完整传递,并同步重命名文件、更新内链与外部引用,最后用 curl -I 验证响应头。

直接用 return 301 配合正则匹配,就能把所有 .htm 请求永久跳转到对应 .html 地址,不依赖 rewrite,性能高、逻辑清晰。
匹配 .htm 并跳转到 .html
在 server 或 location 块中添加如下配置:
- 用
location ~ \.htm$精确匹配以.htm结尾的请求 -
return 301 $scheme://$host$uri.html$request_args;拼接新 URL -
$uri是路径(不含查询参数),$request_args是 ? 后面的全部参数,二者分开拼接更稳妥 - 示例:访问
https://site.com/page.htm?ref=1→ 跳转至https://site.com/page.html?ref=1
只处理特定目录下的 .htm
如果只想迁移 /news/ 或 /doc/ 下的文件,避免误伤其他路径:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 写成
location ~ ^/news/.*\.htm$ { ... } - 或用
location /news/ { if ($request_uri ~ \.htm$) { return 301 ... } } - 注意:
if在 location 内可用,但不要在 server 级别滥用
确保原 .htm 文件已下线或重命名
跳转生效后,需同步完成以下操作,否则可能形成循环或 404:
立即学习“前端免费学习笔记(深入)”;
- 把服务器上所有
.htm文件改名为.html,或删除旧文件 - 检查网站内链、SEO 工具抓取记录、外部引用链接,逐步替换为
.html - 若保留
.htm文件又开启跳转,用户和搜索引擎会持续看到重定向,影响体验与权重传递
验证是否生效
修改配置后重载 Nginx,并用 curl 快速确认响应头:
curl -I http://yoursite.com/test.htm- 应返回
HTTP/2 301及Location: https://yoursite.com/test.html - 注意检查协议(http/https)、域名、路径、参数是否完整保留

















