gpt4 book ai didi

perl - 自定义 404 路由与网站根目录不匹配

转载 作者:行者123 更新时间:2023-12-05 00:44:43 25 4
gpt4 key购买 nike

我为我的 Mojolicious 应用程序定义了一些路由和一个包罗万象的 404 路由:

$r->any('*')->to(cb => sub {
my $self = shift;
$self->render(text => '404 Not Found');
$self->rendered(404);
});

404 路由工作正常:
$ ./bin/myapp.pl -m production get /no_such_url
404 Not Found

但我也希望 404 路由与网站根目录匹配,并且我总是得到一些默认的 Mojolicious 404,即使在生产模式下:
$ ./bin/myapp.pl -m production get /
<!DOCTYPE html>
<html>
<head><title>Page not found</title></head>


我需要做什么才能在 / 上为我的普通 404 回调提供服务?

最佳答案

你是对的 any '*'不会 catch 主指数/ .这似乎是一个异常(exception)。有两个简单的解决方案:

您可以为您的路线创建一个别名。请注意我们在设置渲染文本之前如何设置渲染代码:

use Mojolicious::Lite;

sub my404 {
my $self = shift;
$self->rendered(404);
$self->render(text => '404 any *');

}

any '*' => \&my404;
any '/' => \&my404;

app->start;

您也可以覆盖默认的 404 not found 模板,如 Rendering exception and not found pages 中所述。 :
use Mojolicious::Lite;

app->start;

__DATA__

@@ not_found.development.html.ep
404 default template

关于perl - 自定义 404 路由与网站根目录不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com