2012-11-28 91 views
2

Dart使用HTTP服务器如何完成404重定向?未找到Dart httpServer 404页面

伪代码:

server.addRequestHandler(NOTFOUND,redirectTo(...));

在此先感谢。

+0

404 == *未找到*。 *重定向*是什么意思? –

+0

我想他意味着404页面应该只是重定向到网站的另一个页面,可能会延迟。 – PhiLho

+0

塞思拉德有一个很好的起点:http://stackoverflow.com/questions/13081740/how-do-i-serve-static-files-from-a-different-url-with-dart –

回答

2

如果你想要做一个URL redirection,您可以使用:

  • 一个Refresh头:
server.addRequestHandler(notFound, (HttpRequest request, HttpResponse response) { 
    response.statusCode = HttpStatus.NOT_FOUND; 
    response.headers.set("Refresh", "0; url=http://www.example.com/"); 
    response.outputStream.close(); 
}); 
  • 一个Meta refresh,如果你想显示重定向之前的一些文字:
server.addRequestHandler(notFound, (HttpRequest request, HttpResponse response) { 
    response.statusCode = HttpStatus.NOT_FOUND; 
    response.headers.set(HttpHeaders.CONTENT_TYPE, 'text/html'); 
    response.outputStream.writeString(
     '<!DOCTYPE html>' 
     '<meta http-equiv="Refresh" content="5; url=\'http://example.com/\'">' 
     'Page requested cannot be found. You will be redirected in few seconds...' 
); 
    response.outputStream.close(); 
}); 
+0

另一种方法是使用le位置标题: response.headers.set(“location”,url); –

+0

不幸的是,带有'404'状态和'location'头的重定向似乎不起作用。这就是为什么我没有提到这个标题。 –

+0

我认为问题是“如果我的服务器有一个404,我该如何重定向到一个新的页面”?所以这有两个部分......如何捕捉404(也许他是从静态文件中询问404),然后如何重定向。不过,他并未指定程序如何知道如何从A重定向到B. –