首页 > 解决方案 > 如何让 ReactRouter 忽略一个 URL?

问题描述

我在 Apache 上托管我的 React 项目,并且必须使用 .htaccess 文件重定向请求。它在 React 中,但也使用 vanilla javascript 和 HTML 站点。

在生产中(npm start),它是这样工作的:

如果该站点从 Firebase 获得某些令牌,则该页面将被重定向到该站点,如下所示:

{HaveToken ? (
      
     <BrowserRouter>
       <Route exact path="/" render={() => {window.location.href="tv/indextv.html?m="+auth.currentUser.email+"&p="+othermail+"&t="+othertoken}} />
       
      </BrowserRouter>
    ):null}

如果没有,函数的 return 语句将继续执行,呈现其他内容。在 html/javascript 站点上,单击一个按钮,它将被重定向到同一个 App.js 项目,其中包含以下行:

window.location.href = 'http://localhost/messages';

它只会运行 App.js,并且运行良好,不会再次重新路由,因为它不再只是“/”。

现在我构建了它,并将它添加到 Apache 服务器,它的工作方式有所不同。对于 /messages,我收到 404 错误,原因很明显。

我的问题是,我该如何解决这个问题?我试图通过添加类似的东西来做到这一点, localhost?m=m 这样位置就相同了,但 URL 略有不同。可悲的是,Route 仍然认为这是相同的路径。如果他们没有通过单击另一个站点上的按钮到达这里,有什么方法可以让 Route 只呈现另一个站点?或者我可以从其他站点传递一些可以使 Route 忽略它是同一路径的东西吗?

标签: javascriptreactjsreact-router

解决方案


推荐阅读