在lighttpd重写后获取错误的PATH_INFO

0 投票
1 回答
612 浏览
提问于 2025-04-16 09:02

在我的 lighttpd 配置文件中,我有一个重写规则,内容是这样的:

$HTTP["host"] == "sub.example.com" {
  url.rewrite = (
     "^/(.*)" => "/sub/$1"
  )
}

所以当用户访问 http://sub.example.com 时,其实她是在访问 http://example.com/sub

问题是 PATH_INFO 似乎不太对,

   URL: http://sub.example.com/extra
   PATH_INFO:
     expected: /extra
     what I get: /sub/extra

现在每当我调用 request.get_path() 时,它返回的内容像是 http://sub.example.com/sub/extra,这并不是我想要的结果。

当然,我可以直接重写 request 类的 get_path 方法,但我想知道有没有更简单的方法,比如修改 lighttpd 的配置?

1 个回答

2

如果你想要获取已经处理过的链接地址,可以试试 REQUEST_URI。一般来说,如果你有重写规则,那么你其实想要的是重写后的路径,否则重写就没有意义了。

撰写回答