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

OpenBSD httpd location match规则问题:l/i/b开头请求返回404

OpenBSD httpd 配置DokuWiki URL重写问题解决

问题现象

配置OpenBSD httpd的location规则为DokuWiki做URL重写时,设置了两条规则:

  • 第一条仅匹配/lib/开头的请求
  • 第二条匹配所有非/lib/开头的请求

但实际运行中,所有小写l、i、b开头的请求均返回404,无法被第二条规则处理;大写L/I/B开头的请求则正常。即使注释第一条规则,问题依旧存在。

问题原因

原第二条规则的/([^lib])是字符集否定匹配,它仅匹配单个字符不是l、i、b的请求路径。这就导致:

  • 当请求路径是/lxxx、/ixxx、/bxxx时,第一个字符属于被否定的集合,规则不匹配
  • 无匹配规则的请求直接返回404
  • 大写L/I/B不在否定字符集内,所以能正常匹配第二条规则

修正后的配置

利用Lua模式的负向预查功能实现“排除/lib/开头”的匹配逻辑,同时优化第一条规则的匹配精度:

location match "^/lib/(.*)" {
        request rewrite "/%1"
}

location match "^/(?!lib/)" {
        request rewrite "/doku.php?id=$DOCUMENT_URI&$QUERY_STRING"
}

规则说明

  • 第一条规则:^/lib/(.*) 用^锚定路径开头,确保只有严格以/lib/开头的请求才会匹配,捕获lib/之后的内容进行重写
  • 第二条规则:^/(?!lib/) 是负向预查语法,匹配以/开头但后续内容**不是lib/**的所有请求,覆盖了/l、/login、/index、/blog等所有非/lib/开头的路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:26:02