我正在使用反应样板(https://github.com/react-boilerplate/react-boilerplate) 我的应用程序可以在localhost上正常运行,但是在服务器上的SUBDIRECTORY(重要!不在根目录中!)应用程序中部署之后,应用程序才能刷新,直到刷新为止...如果我尝试在其他路由(/ something / here)中刷新应用程序,我收到找不到404错误页面的信息。
我在这个问题上进行了很多搜索,找出了问题所在和解决方案,但无法解决...您可以在此处查看问题说明: https://tylermcginnis.com/react-router-cannot-get-url-refresh/
我正在使用React Router4。也许我需要使用 historyApiFallback:true 但是Idk如何将它与具有很多webpack配置文件(不仅是..)的react样板一起使用。有帮助吗?
答案 0 :(得分:1)
我以前也有这个问题。在localhost上完全可以,但是在非根目录路由上刷新或直接键入非根目录URL总是给我404。得出的结论是,它无法自行找到非根目录,因为React仅将index.html作为其HTML文档并且需要一些重写规则。
在我的情况下,我的主机正在使用Apache并将.htaccess添加到我的Web根目录中,并且具有以下内容:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
对于nginx,您当然需要修改nginx配置。我在这里找到了一个答案,它看起来比Apache答案简单得多:React-router and nginx
location / {
try_files $uri /index.html;
}
基本上,您需要告诉Web服务器将所有请求转发到React的index.html,从而让react-router处理路由。
其他解决方案是使用HashRouter
,但会导致URL难看。