繁体   English   中英

使用 Sapper,如何在出现 404 错误时重定向到索引页面?

[英]Using Sapper, how can I redirect to the index page on a 404 error?

在出现 404 错误时,我不想显示 404 页面。 相反,如果用户已登录,我想重定向回索引页面,如果用户已注销,我想重定向回登录页面。 如果未登录,我已经能够将用户从索引页面路由到登录页面,所以我可能只需要重定向到索引页面并让它负责重新路由到登录页面,尽管那必须进行两次重新路由似乎效率低下。

我可以通过将routes/_error.svelte页面重写到这个来完成它......

<script>
    import { onMount } from 'svelte';
    onMount(() => {window.location.href = '/'});
</script>

但我不太相信这是完成我想做的事情的最佳方式。 它还重定向所有错误,在未来的项目中,我可能希望显示某些错误,例如 404,但重定向其他错误,例如 500。

有没有人对如何使用 Sapper 更好地实现这一点有一些见解?

您应该尝试goto function。

import { goto } from '@sapper/app';
goto('your/path');

如果你想在 onMount 钩子中做,它应该是:

<script>
    import { onMount } from 'svelte';
    import { goto } from '@sapper/app';
    onMount(() => goto('your/path'));
</script>

在您非常具体的情况下,如果您想根据_error.svelte页面上的错误标准执行此操作,您应该根据错误选择路径:

<script>
    import { onMount } from 'svelte';
    import { goto } from '@sapper/app';
    onMount(() => goto(
      error.status === 500
        ? 'path1'
        : error.status === 404
        ? 'path2'
        : 'path3'
    ));
</script>

原装 GitHub 问题在这里

您还可以使用 HTML 元标记进行重定向。 像这样在routes/_error.svelte上使用它:

<svelte:head>
    <meta http-equiv="refresh" content="0; URL=./index" />
</svelte:head>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM