You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Express路由以实现无.html后缀的简洁站点URL路径

Express 配置无后缀HTML访问路径方案

你可以通过以下两种常用方式实现需求,可根据自己的站点规模选择:

方案1:静态文件扩展配置(适合全静态站点,无需额外写路由)

直接修改你现有的express.static配置项,添加extensions参数即可:

// 需放在所有路由定义的最前面
app.use(express.static(__dirname + '/public', {
  // 自动匹配.html后缀的静态文件
  extensions: ['html']
}))

// 你的根路径路由可以保留
app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname, '/public/index.html'))
})

配置完成后,访问/home时Express会自动查找public/home.html文件返回,无需额外定义单个路由。

方案2:显式定义路由映射(适合需要自定义路径逻辑的场景)

如果你需要对特定路径做权限校验、数据注入等额外逻辑,可以单独为每个路径定义路由:

app.use(express.static(__dirname + '/public'))

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname, 'public', 'index.html'))
})
// 新增自定义路径路由
app.get('/home', (req, res) => {
  res.sendFile(path.join(__dirname, 'public', 'home.html'))
})
app.get('/profile', (req, res) => {
  res.sendFile(path.join(__dirname, 'public', 'profile.html'))
})

注意:path.join推荐传入多段路径参数,避免不同操作系统路径分隔符不兼容的问题

可选优化:禁止带.html后缀访问

如果需要避免用户同时访问到带后缀和不带后缀的路径,可以添加重定向中间件,将带.html的请求永久跳转到无后缀路径:

// 放在所有路由最前面
app.use((req, res, next) => {
  if (req.path.endsWith('.html')) {
    // 去掉.html后缀跳转
    res.redirect(301, req.path.slice(0, -5))
    return
  }
  next()
})

// 后面再放static配置和其他路由

内容的提问来源于stack exchange,提问作者Hrittik Chatterjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:45:04