Lighttpd 拆分请求 URI 并删除查询参数

Lighttpd 拆分请求 URI 并删除查询参数

我正在运行 lighttpd 1.4.33,它是从向 Internet 开放的 Apache 服务器反向代理的。当从 lighttpd 服务器的本地地址访问脚本时,GET 参数可以正常传递给脚本,并且我得到了预期的结果。但是,当通过代理访问脚本(并由以下 lighttpd 规则重写)时,查询参数似乎被完全删除。

似乎导致问题的重写规则:

$HTTP["host"] =~ "^site\.example\.com$" {
        # This affects the requests that aren't rewritten below, ie. static stuff
        server.document-root = "/var/www/example/public"   
        url.rewrite-once = ( "^((?!assets).)*$" => "index.php/$1" )
}

它应该重写所有 URL,以便它们通过 index.php 中的路由引擎传递,但/assets目录中的静态内容除外,这些内容应该以静态方式提供。请注意,/assets是的子目录/var/www/example/public,因此它可以正常工作。

带有丢弃参数的请求的 Lighttpd 调试日志:

2014-07-23 11:36:46: (response.c.310) Request-URI  :  /foo/bar?someparam=data 
2014-07-23 11:36:46: (response.c.311) URI-scheme   :  http 
2014-07-23 11:36:46: (response.c.312) URI-authority:  site.example.com 
2014-07-23 11:36:46: (response.c.313) URI-path     :  /foo/bar 
2014-07-23 11:36:46: (response.c.314) URI-query    :  someparam=data 
2014-07-23 11:36:46: (response.c.309) -- splitting Request-URI 
2014-07-23 11:36:46: (response.c.310) Request-URI  :  index.php/a
2014-07-23 11:36:46: (response.c.311) URI-scheme   :  http 
2014-07-23 11:36:46: (response.c.312) URI-authority:  site.example.com 
2014-07-23 11:36:46: (response.c.313) URI-path     :  index.php/a 
2014-07-23 11:36:46: (response.c.314) URI-query    :

请注意最后一行的空白URI-query字段。似乎“拆分请求 URI”这一步骤破坏了一切。

您知道这可能是什么原因造成的吗?

答案1

事实证明,在 lighttpd >= 上有一个更简单的方法可以做到这一点1.4.24。你可以使用url.rewrite-if-not-file指令,如下所示 (lighttpd <= 1.4.33):

$HTTP["host"] =~ "^site\.example\.com$" {
        # Rewrite all requests to non-physical files
        url.rewrite-if-not-file =
        (
            "^(.*)$" => "index.php/$1"
        )
}

该示例使用指令$HTTP["host"],就像使用$HTTP["url"] 指令直到1.4.34在 lighttpd >= 中1.4.34,您可以在 URL 条件块中使用它:

$HTTP["url"] =~ "^\/site/$" {
        # Rewrite all requests to non-physical files
        url.rewrite-if-not-file =
        (
            "^(.*)$" => "index.php/$1"
        )
}

我想如果你真的被迫使用 lighttpd <= 1.4.24您始终可以使用 mod_magnet 和 Lua。

相关内容