Redirect all http & https requests with lighttpd

2298
TheLukeMcCarthy

I have a spare Raspberry Pi so I decided to check out PirateBox.

I have it all working however the default behaviour is to not redirect https requests. Given the PirateBox will be never connected to the Internet and people connecting most likely won't know the address to request, I would like to redirect all requests (http & https) to the PirateBox Uri, piratebox.lan

I would like to set it up to be similar to a captive portal but I don't need authentication and the requests will always be redirected

PirateBox uses Arch Linux with dnsmasq and lighttpd.
My current setting are

/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") } } 

While all http requests are redirected to the PirateBox page, https requests aren't redirected and the PirateBox page isn't loaded, it just times out.

What am I doing wrong or should I approach this is a different way?

Update
I have also tried

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

and it doesn't work either

1
Вы видели этот http://serverfault.com/a/450408? И особенно часть о браузерах, не перенаправляющих к http, когда соединение установлено в https Toine42 8 лет назад 0
Попробуйте [mod-rewrite] (http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModRewrite) .... [источник] (http://redmine.lighttpd.net/boards/2/topics/1341 ) mk117 8 лет назад 0

1 ответ на вопрос

1
taskalman

У меня нет большого опыта работы с lighttpdсамим собой, но из семантики файла конфигурации, мне кажется, что если у вас есть соединение, входящее через порт 443, оно будет перенаправлено на порт 443независимо от того, указали ли вы http://в URL или не. Если я правильно понимаю, и вы хотите перенаправить на порт 80, вам нужно явно указать это в директиве:

url.redirect = ( "^/(.*)$" => "http://piratebox.lan:80/redirect.html" ) 
К сожалению, это не работает. Я ожидаю, что порт по умолчанию 80 будет использоваться для перенаправления. Как примечание: кажется, что запрос https истекает, так как трафик https переходит на lighttpd. TheLukeMcCarthy 8 лет назад 0

Похожие вопросы