使用 lighttpd 重定向所有 http 和 https 请求

使用 lighttpd 重定向所有 http 和 https 请求

我有一个备用的 Raspberry Pi,所以我决定检查一下 PirateBox。

我已将其全部运行,但默认行为是不重定向 https 请求。鉴于 PirateBox 永远不会连接到互联网,并且连接的人很可能不知道要请求的地址,我想将所有请求(http 和 https)重定向到 PirateBox Uri,piratebox.lan

我想将其设置为类似于强制门户,但我不需要身份验证,并且请求将始终被重定向

PirateBox 使用 Arch Linux 和 dnsmasq 以及 lighttpd。
我当前的设置是

/etc/dnsmasq.conf

address=/#/192.168.77.1

/opt/piratebox/conf/lighttpd/lighttpd.conf

$HTTP["host"] !~ "^piratebox\.lan.*$" {
        url.redirect = ( "^/(.*)$" => "http://piratebox.lan/redirect.html" )
}

$SERVER["socket"] == ":443" {
        $HTTP["host"] !~ "^piratebox\.lan.*$" {
                url.redirect = ( "^/(.*)$" => "http://piratebox.lan/redirect.html" )
        }
}

$SERVER["socket"] == ":80" {
        $HTTP["host"] !~ "^piratebox\.lan.*$" {
                url.redirect = ( "^/(.*)$" => "http://piratebox.lan/redirect.html")
        }
}

虽然所有 http 请求都重定向到 PirateBox 页面,但 https 请求不会被重定向,并且 PirateBox 页面也不会加载,只是超时。

我做错了什么或者我应该用不同的方法来解决这个问题?

更新
我也尝试过

$HTTP["scheme"] == "https" {
        url.redirect = ( "^/(.*)$" => "http://piratebox.lan/redirect.html" )
}

也不起作用

答案1

我对此没有太多经验lighttpd,但从配置文件的语义来看,在我看来,如果您有来自 port 的连接443,它将重定向到 port ,443无论您是否http://在 URL 中指定。如果我理解正确并且您想要重定向到 port 80,则需要在指令中明确指定它:

url.redirect = ( "^/(.*)$" => "http://piratebox.lan:80/redirect.html" )

相关内容