我有个Gatsby博客。我正在写一组教程帖子,用于在create-react-app中编写游戏。在我的Gatsby帖子标记中,我试图链接到同一服务器上该帖子的演示react应用程序的构建版本,但Gatsby总是给我一个404页面。
我正在使用nginx。由gatsby build产生的公用文件夹中的所有内容都位于我的All服务器的var/www/html目录中。
create-react-app构建位于var/www/html/tutorials/01/内部,并且有自己的index.html文件。
在我的标记中,我尝试了这两种格式的链接:view the code [here](/tutorials/01/)和view the code [here](//165.227.94.249/tutorials/01/)。
如果你在浏览器的//165.227.94.249/ post /tutorial-01上查看这篇文章并点击链接,它会带你到//165.227.94.249/tutorials/01/,但会显示一个404页面。但是,如果您在相同的URL刷新浏览器,则将提供有效的react应用程序。
如何防止Gatsby覆盖此请求并显示404页面,而不是让web服务器提供存在于该url的index.html文件?
发布于 2019-11-04 12:41:04
生成时,标记中的内部链接会自动转换为Gatsby链接。Gatsby Link仅适用于来自Gatsby构建的内部资源。您的create-react-app应用程序在同一台服务器上,但在Gatsby构建过程之外。
此组件仅用于指向由Gatsby处理的页面的链接。对于指向其他域上的页面或当前Gatsby站点未处理的同一域上的页面的链接,请使用normal元素。
我认为在标记中使用完整的网址(包括https )可能是成功的:https://165.227.94.249/tutorials/01/
PS:当我尝试的时候,我从你的服务器得到一个连接超时。
发布于 2019-11-11 17:35:13
您应该尝试禁用gatsby-plugin-catch-links。如果这不起作用,请尝试捕获onClick事件,取消该事件并触发您自己的重定向。
function processExternalSameDomainLink(event) {
window.location.href = url
event.stopPropagation()
event.preventDefault()
return false
}
<a href={newTo} onClick={processExternalSameDomainLink}>https://stackoverflow.com/questions/58666226
复制相似问题