我正在尝试将一个用Gatsby构建的博客站点部署到Netlify。问题是,我想从/ blog服务该站点。 遵循文档之后,我将gatsby-config.js更改为包含pathPrefix,如下所示:
module.exports = {
pathPrefix: `/blog`,
siteMetadata: {...},
plugins: [...]
}
接下来,我将构建命令更改为包括--prefix-paths:
gatsby build --prefix-paths
当我使用gatsby serve --prefix-paths
在本地运行站点时,一切正常。但是,在我部署netlify之后,该站点仍然是从根目录/而不是/ blog服务的。
我的netlify.toml:
[build]
Command = "npm run build"
Functions = "lambda"
Publish = "public"
构建命令frum netlify.toml从package.json运行以下命令:
"build": "run-p build:**",
"build:app": "gatsby build --prefix-paths",
"build:lambda": "netlify-lambda build src/lambda",
我在这里想念什么?我需要进行一些其他配置来netlify还是其他?
答案 0 :(得分:1)
假设您已经有一个主站点正在运行,并且您想要将其gatsby博客集成到其中。
gatsby-config.js
文件中,添加:module.exports = {
pathPrefix: `/blog`,
}
netlify.toml
配置文件:[[redirects]]
from = "/blog/*"
to = "/:splat"
此重定向的原因是--prefix-path
不会更改gatsby将构建文件存储在构建目录中的位置。这会在以/blog
为前缀的博客链接与文件路径之间产生差异。因此,您想告诉您的站点,每个以/blog
为前缀的URL都应指向您的构建目录(在/
路径下)中的文件。
netlify.toml
配置文件:[[redirects]]
from = "/blog/*"
to = "https://my-gatsby-blog.netlify.app/:splat"
status = 200
这告诉您的主站点,应针对以/blog/
开头的每个路径的URL重定向到gatsby博客。
答案 1 :(得分:0)
对于遇到相同问题的任何人。我可以通过将公用文件夹中的所有文件复制到“ blog”文件夹中来解决此问题,如下所示:
"build": "run-p build:**",
"build:app": "npm run clean && gatsby build --prefix-paths && npm run move",
"build:lambda": "netlify-lambda build src/lambda",
"move": "cd public && mkdir blog | mv * blog"
我将move命令添加到package.json,并在构建后执行它。我不确定这是否是我应该做的方式,但是在进行了一些研究(我还发现一个开始这样做的人)之后,我认为还可以。
现在,文件是通过“ / blog”提供的,一切正常。