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



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

我想这样做,如果你访问任何无效的域名(例如http://aasdflajsdf.com,它显示一个404页面,链接到它接受的实际域名。

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

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

最灵活的解决方案是编写一个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/" )
}

最新更新