React静态网站将除首页

时间:2018-08-23 12:51:13

标签: javascript reactjs react-router create-react-app

我向共享主机发布了我的第一个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

[问题:]如何解决?

3 个答案:

答案 0 :(得分:2)

您有一个拥有一个index.html的静态网站。您希望react-router为您处理所有请求和导航。

现在,当您点击spaceyfi.com/printing时,Apache服务器将在目录中搜索目录printingindex.html。找不到一个,它的响应是404。

在webpack开发模式下,开发服务器配置具有针对此目的的historyApiFallback:

  devServer: {
    inline: true,
    port: 8080,
    historyApiFallback: {
      index: '/'
    }
  }

要配置您的Web服务器以使React-Router处理所有路由,您需要修改重定向规则。

如果您使用Amazon S3进行状态托管,请阅读this guide

如果您将其他服务用于静态托管,请参阅文档。配置应如下所示:

enter image description here

我希望这个答案会有所帮助,并为您指出正确的(重新)方向。

确保也使用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