6

如何将未找到的用户定义错误页面和服务器错误页面重定向到用户定义页面 Mojolicious lite

4

3 回答 3

12

您可以为您的自定义页面添加一个模板,命名为exception.html.epnot_found.html.ep在您的 liteapp 末尾。

例如:

use Mojolicious::Lite;
get '/' => sub {
    my $self = shift;
    $self->render(text => "Hello.");
};
app->start;

__DATA__
@@ not_found.html.ep
<!DOCTYPE html>
<html>
  <head><title>Page not found</title></head>
  <body>Page not found <%= $status %></body>
</html>

如需参考,请参阅Mojolicious 渲染指南

渲染器将​​始终尝试查找 exception.$mode.$format.* 或 not_found.$mode.$format.*,然后再回退到内置的默认模板。

于 2012-11-08T02:26:52.277 回答
7

我想在我的 404 页面中运行一些代码,所以从这里借用 https://groups.google.com/forum/#!topic/mojolicious/0wzBRnetiHo

我制作了一条可以捕获所有内容并将其放置在所有其他路线之后的路线,因此与路线不匹配的网址会落入此范围:

any '/(*)' => sub {
    my $self = shift;
    $self->res->code(404);
    $self->res->message('Not Found');

    # 404       
    $self->stash( { 
        # ... my stuff in the stash ... 
    } );

    $self->render('mytemplate', status => 404);
};
于 2013-10-16T13:07:05.677 回答
0

我有一个 API 想要像其他任何错误一样发送回 404 错误——相同的 JSON 格式等等。

startup我在(完整的应用程序,而不是精简版)的末尾有这个片段。由于这是最后定义的路由,它只拾取尚未处理的任何内容。而且,由于它处理了所有这些,Mojo 永远没有机会通过查找模板来使用它自己的 404 处理:

  $self->routes->any('/*')->to(
    controller => 'Base',
    action     => 'not_found'
  );
于 2022-02-22T21:54:10.483 回答