我向共享主机发布了我的第一个React应用。
这是一个多页面的React应用程序,成功构建项目后,我做了Yarn Build
并创建了一个构建文件夹
我将生成的文件夹上载到托管服务器,但是由于某种原因,托管服务器仅显示主页,没有其他页面(其他页面在localhost中工作)
这是指向我的网站的链接:http://spaceyfi.com/ 这是指向我的github存储库https://github.com/irohitb/portfolio-
的链接在存储库中,路由I have a path named printing
<Route exact path="/printing" component={Printing} />'
但是当我转到spaceyfi.com/printing时,它没有打开。
[更新:] 这是我的构建文件夹,其中仅包含一个HTML文件(如果相关) https://github.com/irohitb/portfolio-/tree/master/build
[问题:]如何解决?
答案 0 :(得分:2)
您有一个拥有一个index.html
的静态网站。您希望react-router为您处理所有请求和导航。
现在,当您点击spaceyfi.com/printing时,Apache服务器将在目录中搜索目录printing
和index.html
。找不到一个,它的响应是404。
在webpack开发模式下,开发服务器配置具有针对此目的的historyApiFallback:
devServer: {
inline: true,
port: 8080,
historyApiFallback: {
index: '/'
}
}
要配置您的Web服务器以使React-Router处理所有路由,您需要修改重定向规则。
如果您使用Amazon S3
进行状态托管,请阅读this guide。
如果您将其他服务用于静态托管,请参阅文档。配置应如下所示:
我希望这个答案会有所帮助,并为您指出正确的(重新)方向。
确保也使用react-routerLink组件进行导航。
答案 1 :(得分:1)
因此,我使用的是Namecheap的托管(共享托管),为了使用其他路由,您需要这样做
在我们上载/放置文件的目录中。我们需要创建一个.htaccess
。在.htaccess
中输入此配置(对我来说,复制并完成了工作)
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
答案 2 :(得分:0)
对于 GCP 存储(Google 相当于 S3),我遵循了 yotke 的建议并且效果很好:
gsutil web set -m index.html -e index.html