Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mojolicious lite how to redirect for not found and server error pages to user defined error page

How to redirect user defined error page for not found and server error pages to user define page Mojolicious lite

like image 711
joe Avatar asked Nov 07 '12 14:11

joe


Video Answer


2 Answers

You can add a template for your custom page named exception.html.ep or not_found.html.ep at the end of your liteapp.

For example:

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>

For a reference, see the Mojolicious rendering guide.

The renderer will always try to find exception.$mode.$format.* or not_found.$mode.$format.* before falling back to the built-in default templates.

like image 60
stevenl Avatar answered Oct 29 '22 01:10

stevenl


I wanted to run some code in my 404 page so borrowing from here https://groups.google.com/forum/#!topic/mojolicious/0wzBRnetiHo

I made a route that catches everything and placed it after all my other routes, so urls that don't match routes fall through to this:

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);
};
like image 8
Matthew Lock Avatar answered Oct 29 '22 01:10

Matthew Lock