首页 > 解决方案 > React 路由在 dev 中工作但在 Apache 上的构建中不起作用——构建问题还是 Web 服务器问题?

问题描述

我有一个带有一些简单路由的反应应用程序,它在运行开发服务器时完美运行,但在从构建文件夹运行时却不行。

到目前为止,我在网上发现了类似但不完全相同的问题——我希望我没有添加重复的问题。如果是这样,我很抱歉,如果可能的话,请指导我找到解决方案。

代码非常简单,如下所示。正如我所提到的,它已经在开发服务器上运行,所以我认为问题不在于这里。

<Router>
  <div className="App">
    <Switch>
      <Route path="/quotation">
        ...do quotation stuff...
      </Route>
      <Route path="/">
       ...do homepage stuff...
      </Route>
    </Switch>
   </div>
</Router>

我根据文档添加了 .htaccess 文件:

Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.html [QSA,L]

部署构建文件夹后,可以直接访问它(在我的情况下,类似于 staging.example.com/frontend)。问题是尝试添加路由,例如 staging.example.com/frontend/quotation。没有 .htaccess 文件,我得到一个 404,正如预期的那样。然而,有了 .htaccess 文件,它只为我提供主页,即忽略“/quotation”部分。

编辑:当我将构建文件夹的内容直接上传到文档根目录时,它可以工作,例如 staging.example.com 按照上面的示例。这暂时解决了问题,但感觉不是 100% 令人满意。我猜想 .htaccess 文件需要调整,但我不确定如何调整。或者,package.json 中是否有类似“主页”字段的内容?

标签: reactjsapache

解决方案


推荐阅读