React:在公共文件夹内访问React应用程序外部的页面

时间:2019-04-10 10:28:55

标签: reactjs

我有一个create-react-app创建的React应用程序。该应用程序运行正常,但遇到了问题

我需要在纯HTML站点上测试Som广告,而无需其他React代码。我的问题是ads.txt标签需要由Google抓取,在新页面/ URL上最多可能需要24小时,而我实际上没有时间。

所以我做了以下事情。在我的仓库/public下的仓库中,添加了一个文件夹/ad-test,其中包含index.html。当我使用npm start在本地投放并转到http://localhost:3000/ad-test时,效果很好。

太好了,我考虑过并将其部署到生产环境中,但是现在当我尝试转到http://[my-site]/ad-testhttp://[my-site]/yo-test/index.html时,它不起作用(我得到了我创建的React 404站点)。

我看了here,如果我理解正确,则无法按照我尝试的方式进行操作,因为构建阶段将不包括公用文件夹。我对此是否正确?

有什么办法解决这个问题吗?

编辑:

一般来说,我对React和React Router都有很好的了解,该应用程序已经使用<Switch><Route ... /></Switch>并具有通向“未找到组件”和底部的全部路由。

我的问题是,我们包含了广告提供商提供的一些广告脚本。广告不会在应用程序中显示(完全从浏览器中删除了adblockers等等),提供者认为我们在React代码中出错了。

我们认为我们没有犯任何错误(广告在我们的测试环境中可以正常显示,但在产品中不能正常显示),我们必须证明React不会为没有展示的广告负责。

为此,我们创建了一个静态HTML文件,其中所有广告都经过硬编码,没有React组件或其他可能会干扰的内容。但是,由于有广告,Google抓取工具和ads.txt,我们需要将静态测试页与我们的主页/应用程序置于同一个域中。

这就是为什么我问是否有可能以某种方式添加一个可以从http://my.page/test-page.html到达而不会被React路由器“拦截”的静态HTML,即它存在于React外部但在同一服务器上。

>

1 个答案:

答案 0 :(得分:0)

当您通过create-react-app使用react时,这意味着您正在构建单页应用程序。

这意味着运行npm run build后,您将拥有一个 build 文件夹,该文件夹中只有一个html文件,称为index.html。

此index.html不知道,并且与您在 ad-test 文件夹中添加的“ index.html ”无关。

如果您希望您的广告测试html被react识别,则需要使其成为app.js的组件,并使用react-router为其指定路径名。

这很简单。

首先,安装react-router-dom;

第二,设置react-router-dom;请参阅https://reacttraining.com/react-router/web/guides/quick-start

第三,为您的add-test组件指定一个路径名。您的js代码应如下所示:

<Route path='/ad-test' component={AdTest} />

重要

部署应用程序后,请始终记住您只是构建了一个单页应用程序。

您的应用程序中只有一个html

请确保在部署后测试应用程序时,必须告知服务提供商,无论用户在地址栏中输入什么路径名,都必须始终将其重定向到index.html

构建阶段包括公用文件夹:

如果公用文件夹中有图片,并且此图片已导入其他组件,则在运行 npm run build

后将显示该图片

希望有帮助。