2012-11-28 101 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. –