Firebase 托管重定向网站没有所有页面

Posted

技术标签:

【中文标题】Firebase 托管重定向网站没有所有页面【英文标题】:Firebase hosting redirected website doesnt have all pages 【发布时间】:2020-12-06 05:25:06 【问题描述】:

我有一个由 Firebase 托管的 React 应用程序,并购买了一个自定义域 www.encor.cc,以便我的应用程序可以部署在此 URL 上。然而,即使在将我的自定义 url (encor.cc) 重定向到 firebase 部署的 web url (adripa-4771c.web.app) 之后,encor.cc 除了主 '/' 页面外,其他所有页面都没有。

如果我现在访问 encor.cc,只有登录页面有效,其他所有页面都给我一个 404。但是,所有页面都在 adripa-4771c.web.app 中有效

关于如何解决此问题的任何建议?谢谢

这是我的 Firebase 控制台概览:

编辑:

这就是我使用 react-router-dom 设置链接的方式。另外,我的应用程序是使用 create-react-app 设置的。

ReactDOM.render(
  <ThemeProvider theme=theme>
    <Router history=history>
      <Switch>
        <Route exact path="/" component=Landing />
        <Route exact path="/register" component=Register />
        <Route exact path="/login" component=Login />
        <Route exact path="/admin" component=Admin/>
        <Route exact path='/:user' component=User/>
        <Route exact path='/l/terms' component=Terms/>
        <Route exact path='/l/privacy' component=Privacy/>
        <Route exact path='/l/contact' component=Contact/>
        <Route exact path='/l/blog' component=Blog/>
        <Route exact path='/l/faq' component=Faq />
        <Route exact path='/l/about' component=About/>
        <Route exact path='/l/plans' component=Plans/>
        <Route exact path='/l/forgot' component=Forgot/>
      </Switch>
    </Router>
  </ThemeProvider>,
  document.getElementById('root')
);

【问题讨论】:

不确定您是如何构建托管文件夹的。 encor.cc/l/plans我被重定向到domain.com/I/plans你可以尝试将所有html文件保存在公共文件夹中并重试 嗯.. 我该怎么做?哈哈;我所有的链接都在 index.js 中设置,因为我已经用代码更新了我的帖子 如果我访问 adripa-4771c.web.app 并单击“计划”,我会得到 404,所以我看到两个域之间的行为相同。 404 建议您需要将主机重写配置为为所有请求提供index.html。 firebase.google.com/docs/hosting/full-config#rewrites 【参考方案1】:

添加这个似乎可以解决问题

    "rewrites": [
      
        "source": "**",
        "destination": "/index.html"
      
    ]

【讨论】:

以上是关于Firebase 托管重定向网站没有所有页面的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase 身份验证和托管将登录用户重定向到子域?

将 Firebase 托管根目录重定向到云功能不起作用

可以根据身份验证状态自定义Firebase托管行为(例如,重定向)吗?

Firebase 可调用函数失败 CORS 重定向

当 url 没有斜杠时,AWS s3 强制 302 重定向 - 需要 301s

CloudFront 使用路径前缀重定向所有请求