regex 在Lighttpd中重定向除一个页面以外的所有页面

ma8fv8wu  于 2023-05-30  发布在  其他
关注(0)|答案(2)|浏览(211)

如何将lighttpd Web服务器上除一个页面外的所有页面重定向到HTTPS?我想出了以下方法,但它仍然重定向“/report.cgi”-我假设是因为第二个重定向条件覆盖了第一个:

# redirect HTTP
server.modules += ( "mod_redirect" )
$HTTP["scheme"] == "http" {
    $HTTP["host"] =~ ".*" {
        url.redirect = (
           "^/report\.cgi$" => "http://%0$0",
           "^/.*$" => "https://%0$0"
        )
    }
}

我需要这个,因为嵌入式设备应该能够通过HTTP联系我的Web服务器。

brccelvz

brccelvz1#

感谢https://stackoverflow.com/a/3522147/3415618,我提出了以下解决方案:

# redirect HTTP
server.modules += ( "mod_redirect" )
$HTTP["scheme"] == "http" {
    $HTTP["host"] =~ ".*" {
        url.redirect = (
            "^/(?!report.cgi).*" => "https://%0$0"
        )
    }
}
gajydyqb

gajydyqb2#

我有一个类似的问题要解决(letsencrypt webroot authenticator要么不遵循301重定向,要么通过https获取临时挑战文件)。
出于某种原因,公认的答案对我不起作用,但下面的答案对我起作用。

$HTTP["scheme"] == "http" {
    $HTTP["host"] =~ ".*" {
        url.redirect = (
            "^/\.well-known/acme-challenge/.*" => "",
            "" => "https://${url.authority}${url.path}${qsa}"
        )
    }
}

在此页面上找到解决方案:https://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_redirect

  • 重定向规则被评估直到第一个匹配的重定向规则。作为允许在不触发重定向的情况下短路重定向规则的特殊情况,请指定一个空目标:url.redirect =(“^/do-not-redirect/this/path”=>“”).然后,另一个全面重定向规则可能重定向其他所有内容。这可以用作其他条件中嵌套条件的替代方法。空白目标特例在1.4.40或更高版本中可用。*

相关问题