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

如何让Lighttpd将无后缀URL解析为对应.html文件?

解决Lighttpd无后缀HTML文件解析(适配Quartz部署)

直接用以下配置即可实现需求,同时避免无限循环和404问题:

# 先确保启用rewrite模块
server.modules += ("mod_rewrite")

url.rewrite-if-not-file = (
    # 匹配无后缀的单文件请求,映射到对应.html
    "^/([^/.]+)$" => "/$1.html",
    # 匹配末尾带/的目录请求,映射到目录下的index.html
    "^/(.+)/$" => "/$1/index.html",
    # 根目录请求直接映射到index.html
    "^/$" => "/index.html"
)

规则说明

  • 第一条规则^/([^/.]+)$:精准匹配不含斜杠和点的路径(比如/abcd),确保不会误匹配带后缀的文件(如/style.css)或多级目录(如/abcd/efg),直接重写到对应.html文件。
  • 第二条规则^/(.+)/$:专门处理末尾带斜杠的目录请求(比如/abcd/),自动映射到该目录下的index.html。
  • 第三条规则单独处理根目录请求,避免根路径匹配异常。

之前配置的问题分析

  • 第一组配置:"" => "${url.path}/index.html"会对所有不存在的文件强制追加/index.html,再配合^(.*)/index.html$ => $1.html的规则,会形成无限循环(比如请求/abcd→/abcd/index.html→/abcd.html→若不存在又追加/index.html),同时无法正确返回404。
  • 第二组配置:仅匹配末尾带斜杠的路径,但Quartz的链接均不带斜杠,导致目录类请求(比如/abcd对应服务器上的/abcd/index.html)无法触发规则,仍然返回404。

额外注意

  • 若有带参数的动态URL,可调整正则为^/([^/.]+)\?(.*)$" => "/$1.html?$2",兼容参数传递。
  • 开启调试日志debug.log-request-handling = "enable"可排查重写流程中的问题。

内容的提问来源于stack exchange,提问作者Sudipto Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:21:09