我回来了(Refreshing React with Express server)。我希望找出这个问题。
快速回顾:我正在尝试刷新我的React网站。如果我访问www.domain.com/about,我将获得:
未找到 在此服务器上找不到请求的URL。
相同,如果我单击按钮进入/ about并单击“刷新”,我将收到此错误。
我的目标 要访问我的网站,请单击另一页(即domain.com/anotherpage),然后按f5键刷新并获得相同的页面。
我了解:
问题在于,当我单击我的React应用程序按钮或链接转到另一个页面时,React只是更改URL。然后,当我刷新时,它将查找www.domain.com/whatever。由于没有任何内容,它返回404。
我也知道,如果我可以让我的React应用程序将所有流量定向到index.html。 React将处理其余的事情。
我尝试过的事情:
在我以前的文章中,建议使用我的托管站点将流量重定向到index.html。但是,我的托管站点允许我为子域调整DNS,但此后什么也没有。 (即www.subdomain.domain.com可以正常运行,但www.domain.com/无论如何都不能),这是我期望的,但我想我会尝试的。
但是我确实有一个Express应用程序,它不提供文件,只是等待一个按钮被按下然后执行操作。我不需要运行服务器即可启动网站。
我已经尝试为此创建一条快速路线,它看起来像:
app.get('/*', (req, res) =>{
res.sendFile(path.join(__dirname + '/public/index.html'));
});
我仍然收到相同的404错误。
我还向服务器添加了index.html。认为它需要.html文件进行发送。 (认为可能很好)。
我不知道的
React在生产中会在哪里寻找index.html?当我在asset-manifest.json下查看构建文件时,有一行“ index.html”:“ /index.html”代码。它在哪里找到索引文件?如果是这样,我可以将其更改为在每个页面请求上都转到index.html吗?
显然,我希望用户能够刷新页面并返回页面。有人可以指出我正确的方向吗?
谢谢!