6

見つからない場合のユーザー定義のエラーページとサーバーエラーページをユーザー定義ページにリダイレクトする方法Mojoliciouslite

4

3 に答える 3

12

exception.html.epliteappという名前の、またはnot_found.html.epliteappの最後にカスタムページのテンプレートを追加できます。

例えば:

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

すべてをキャッチするルートを作成し、他のすべてのルートの後に配置したため、ルートと一致しないURLは次のようになります。

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

他のエラーと同じように404エラーを送り返したいAPIがありました。同じJSON形式などです。

私はこのスニペットを最後に持っていましたstartup(ライトではなくフルアプリ)。これは最後に定義されたルートであるため、まだ処理されていないもののみを取得します。そして、これはすべてを処理するので、Mojoはテンプレートを探すことによって独自の404処理を使用する機会を得ることはありません。

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