我在没有外部互联网访问的嵌入式系统上安装了Lighttpd。由于使用了cookies,我们希望确保人们不会访问除了指定域名以外的任何网站。
我想这样做是为了让您访问任何无效的域名(例如http://aasdflajsdf.com
),它会显示一个404页面,其中包含指向其接受的实际域名的链接。
我已经设置了这个:
server.error-handler-404 = "/404.html"
但如果主机不匹配,如何“调用”404?我不想重定向到404页面,我只想在用户输入的地址提供404页面的内容。
答案 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/" )
}