如何将 404 重定向到起始页?

How to redirect 404 to start page?

我刚开始在 firebase 上托管网络应用程序。 使用 firebase cli (firebase-tools) 的自动设置在我的 public 文件夹中创建了一个 404.html 文件。

但我不想看到自定义 404 错误页面,也不想看到来自 firebase 的默认页面。 我想将所有 404 重定向到起始页,以便应用程序无论如何都会被初始化。 (我的 webpack-dev-server 本地设置工作正常)

解决方法是将 index.html 中的相同内容放入 404.html。但这会导致双倍的维护..

我在这里 https://firebase.google.com/docs/hosting/url-redirects-rewrites 找到了一些关于重定向配置的信息。 但是 404 错误类型的重定向是不可能的。 无法使用 .htaccess 文件。

我是否缺少更改此行为的正确位置,无论是在我的 firebase.json 文件中还是在 https://console.firebase.google.com/ 中??

不确定这是否适合你,我从来没有用 .htaccess 做过任何事情,但在我的情况下,我总是这样修复它:

您可以在 firebase.json 文件的重写部分中包含一个通配符路由作为最后一条路由,这样任何以前无人认领的路由都会匹配:

"rewrites": [
  {
    // route info here
  },
  {
    // another route
  },
  {
    // If it makes it here, it didn't match any previous routing
    // Match all routes that get to this point and send them to the home page.
    "source": "**",
    "destination": "/index.html"
  }
]

如果您不想留下 original/non-existent url(例如 https://example.com/asdf),您可以修改 404.html 源并将其替换为 js 重定向。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Page Not Found</title>
    <script>
      window.location.href = "/";
    </script>
  </head>
</html>