gpt4 book ai didi

html - Perl Catalyst - 使用 href 链接到同一站点上的页面时找不到页面

转载 作者:行者123 更新时间:2023-12-02 21:46:32 25 4
gpt4 key购买 nike

我正在创建一个 Catalyst 应用程序,目前我有一个简单的登录页面,其中还包含“忘记密码”链接。一切都很完美,除了当我点击“忘记密码”链接时,它应该带我到一个全新的 html 页面,其中只包含“不幸的是,你应该记住它”。相反,我收到“找不到页面”错误。

我在做什么:

我有一个名为 Login.pm 的 Controller ,其中包含以下内容:

 sub default : Private {
my ( $self, $c ) = @_;
$c->forward('login');
}

sub login : Path('/login') {
my ( $self, $c ) = @_;

$c->stash->{title} = "Login page";
$c->stash->{page} = "html";
$c->stash->{template} = "login.html";
}

以上所有内容都可以正常工作并生成登录页面。

在 Catalyst root/login.html 文件(以及所有其他位,如按钮)中,我有以下代码片段,应该允许我链接到“忘记密码”html 页面.

<p><a href="forgotpassword.html">Forgot Password?</a></p>

它引用的 root/forgotpassword.html 文件包含以下内容:

<!DOCTYPE html>
<html>
<body>

<h1>Unlucky, you should have remembered it</h1>

</body>
</html>

但是,当我点击登录页面上的“忘记密码”链接时,它会转到“mydomainname/forgotpassword.html”并显示“找不到页面”。

我需要为忘记密码页面创建一个 Controller 吗?如果是的话,它需要包含什么?或者有什么明显的我忽略的事情吗?

我是 Catalyst 新手。

最佳答案

终于解决了这个问题,感谢“mikew”向我推荐了 CPAN 食谱的“提供静态内容”部分。

问题是什么:

使用下面的 html5 代码,我引用了一个简单的 html 页面,该页面不需要与 Catalyst 交互即可工作。

<p><a href="forgotpassword.html">Forgot Password?</a></p>

但是,正如 Cookbook 中提到的和 Catalyst::Plugin::Static::Simple

“默认情况下,不提供以下扩展(即它们将由 Catalyst 处理):tmpl、tt、tt2、html、xhtml。”

“有些文件类型您可能不希望用作静态文件。此类中最重要的是原始模板文件。默认情况下,扩展名为 tmpl、tt、tt2、html 和 xhtml 的文件为了安全起见,Static::Simple 将忽略它。”

为了防止“找不到页面”错误(因为默认情况下会忽略 html 页面),您需要将以下内容添加到 MyApp.pm 文件中,确保删除扩展名你不想被忽略(在我的例子中是 html 文件)。

MyApp->config(
static => {
ignore_extensions => [
qw/tmpl tt tt2 xhtml/
],
},
);

关于html - Perl Catalyst - 使用 href 链接到同一站点上的页面时找不到页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19431531/

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