Express路由URL优化:如何隐藏URL中的.html后缀?
解决Express路由URL显示.html后缀的问题
排查页面内部跳转代码
打开page2.html,检查并移除会触发URL跳转的内容:- 删除meta刷新标签:
<meta http-equiv="refresh" content="0; url=page2.html"> - 移除JavaScript跳转逻辑:比如
window.location.href = 'page2.html' - 修正
<base>标签:如果设置了<base href="./">,改为<base href="/">,避免相对路径引发的URL变化
- 删除meta刷新标签:
调整Express路由与中间件顺序
确保自定义路由在静态文件中间件之前定义,让请求优先匹配你的路由规则,而非被静态文件中间件自动解析:
const express = require('express'); const path = require('path'); const app = express(); // 先定义路由 app.get("/page2", (req,res) => { res.sendFile(path.join(__dirname, 'public', "page2.html")); }); // 再挂载静态文件中间件 app.use(express.static('public')); app.listen(3000, () => { console.log('Server running on port 3000'); });
- 检查静态文件中间件配置
如果启用了extensions选项(如app.use(express.static('public', { extensions: ['html'] }))),它会自动映射无后缀请求到对应HTML文件,但不会引发URL跳转。若出现跳转,可显式关闭redirect选项(默认仅针对目录请求跳转):
app.use(express.static('public', { redirect: false }));
- 验证网络请求
打开浏览器开发者工具「网络」面板,点击链接后查看请求状态:- 若发现301/302重定向,检查响应头
Location字段,确认跳转发起方是服务器还是页面脚本 - 排查页面加载时的所有请求,排除资源路径错误导致的间接跳转
- 若发现301/302重定向,检查响应头
内容的提问来源于stack exchange,提问作者Tushar Jolly
相关产品推荐
相关产品推荐

