簡體   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