我有一个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-test
或http://[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外部但在同一服务器上。
答案 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
后将显示该图片希望有帮助。