Lighttpd配置返回状态码的方式

[size=medium][b]如何返回一个404状态码和404页面:[/b][/size]
某些资源不相让用户直接访问,可以直接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"

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

[size=medium][b]如何返回一个403状态码和403页面:[/b][/size]
我们有时候有些资源不想对某些用户或爬虫、浏览器开放,而且我也不想告诉他资源不存在,而明确告诉他禁止你的访问,这时候就需要返回403状态码,同时需要给用户返回一个403的页面,告诉他没有权限访问这些资源

$HTTP["useragent"] =~ "baidu|Sogou" {
url.access-deny = ("")
server.errorfile-prefix = "/srv/www/htdocs/errors/status-"
}

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

你可能感兴趣的:(lighttpd)