Lighttpd配置返回状态码的方式

如何返回一个404状态码和404页面:
某些资源不相让用户直接访问,可以直接rewrite到一个404页面,例如:
url.rewrite = ( "^/download/(.*)\.(zip|rar)$" => "/404.htm" )

这样当用户直接访问download下的zip和rar文件时候就会看到一个404.htm的错误页面,但是这样做页面对了,浏览器取得的状态码却还是200,比如爬虫之类的爬到这个地址就会认为这个地址是有效的,怎么让用户能看到404页面,返回的状态码也是404呢?
url.rewrite = ( "^/download/(.*)\.(zip|rar)$" => "/404.html" )
server.error-handler-404 = "/404.htm"

这里注意扩展名, 404.html是不存在的, 404.htm是真实存在的,所以当rewrite到一个不存在的文件时候lighttpd就会返回404状态码,而server.error-handler-404就会把404.htm的内容返回给浏览器。这样返回的状态码和页面内容就保持一致了。

如何返回一个403状态码和403页面:
我们有时候有些资源不想对某些用户或爬虫、浏览器开放,而且我也不想告诉他资源不存在,而明确告诉他禁止你的访问,这时候就需要返回403状态码,同时需要给用户返回一个403的页面,告诉他没有权限访问这些资源
$HTTP["useragent"] =~ "baidu|Sogou" {
    url.access-deny = ("")
    server.errorfile-prefix = "/srv/www/htdocs/errors/status-"
}

除了上面这段配置,还需要写一个 /srv/www/htdocs/errors/status-403.html页面,
这样当agent中包含baidu或Sogou字样的时候,lighttpd就会返回一个403状态码,和status-403.html页面的内容。

你可能感兴趣的:(lighttpd,404,403,status code)