如果HTTP主机不匹配,如何在Lighttpd中显示404错误?

时间:2015-08-18 18:23:05

标签: lighttpd

我在没有外部互联网访问的嵌入式系统上安装了Lighttpd。由于使用了cookies,我们希望确保人们不会访问除了指定域名以外的任何网站。

我想这样做是为了让您访问任何无效的域名(例如http://aasdflajsdf.com),它会显示一个404页面,其中包含指向其接受的实际域名的链接。

我已经设置了这个: server.error-handler-404 = "/404.html"

但如果主机不匹配,如何“调用”404?我不想重定向到404页面,我只想在用户输入的地址提供404页面的内容。

1 个答案:

答案 0 :(得分:0)

最灵活的解决方案是编写一个CGI脚本(或FastCGI或SCGI),它准确地返回您想要的HTTP状态代码(404),其中包含您想要的内容。

另一个部分解决方案将提供404.html的内容,但具有200 OK状态代码:

$HTTP["host"] != "example.com" {
    url.rewrite-once = ( ".*" => "/404.html" )
}

您可以改为重写为不存在的URL,因为您已配置了404处理程序。但是,这可能会为您的错误日志添加相当多的噪音:

server.error-handler-404 = "/404.html"

$HTTP["host"] != "example.com" {
    url.rewrite-once = ( ".*" => "/nonexistent.html" )
}

对于另一种选择,您可以使用重定向指定404 Not Found状态代码。我知道你提到你想要避免重定向,但无论如何,你可以尝试这样做,看看它是否符合你的要求。

if $HTTP["host"] != "example.com" {
    url.redirect-code = 404
    url.redirect = ( ".*" => "http://example.com/" )
}