reactjs React-router URL endpoints在生产环境中返回NOT FOUND

b1payxdu  于 2023-06-22  发布在  React
关注(0)|答案(1)|浏览(106)

我的项目在本地服务器环境中运行良好,但由于我将其部署在render.com的Web服务器上,因此每当我尝试刷新或访问具有主页以外端点的URL时,都会得到一个空的未找到页面。我在这里读到了这一点,并试图实现全面解决方案,但它不适合我。我的项目由两个文件夹组成客户端和服务器。我正在使用服务器作为我托管的Web服务器的入口点,但我不确定它是否无法从客户端文件夹发送文件。
我尝试将以下代码段添加到server.js文件中。

const clientPath = path.resolve(__dirname, '..', 'client', 'build')

// Serve static files from the build directory
app.use(express.static(clientPath))

// Catch-all route handler
app.get('*', (req, res) => {
  console.log('in catch-all')
  res.sendFile(path.join(clientPath, 'index.html'))
})

catch-all位于文件的末尾,在所有配置的API端点之后,以防它与上述任何一个端点都不匹配。当我尝试访问一个随机端点时,console.log('incatch-all')不会打印在服务器的日志上。

9bfwbjaz

9bfwbjaz1#

在使用Apache的情况下,可以添加一个.htaccess文件,如下所示:

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

否则,您可以复制index.html文件并将其重命名为200.html。希望能帮上忙。

相关问题