我目前正在为我的网站生成动态站点地图。该站点基于 Vuejs 构建,并部署在 Azure 静态 Web 应用程序上。我想为谷歌优化我的 SEO。
该项目的当前阶段是我能够生成站点地图并将它们存储在存储帐户中。所有站点地图都链接到站点地图索引文件,该文件存储在 Vuejs 的公共文件夹中,然后在通过 git 部署时可以在根目录下使用。
问题是单个站点地图文件只能存储 50k URL,因此如果超过,我们需要创建一个新的站点地图,然后在站点地图索引文件中添加该新文件的链接。但这不可能,因为现在我们的站点地图索引文件是静态的,因为一旦部署到静态 Web 应用程序就无法更改。因此,我想让这个文件动态变化。
我的解决方法:
- 我在 sitemap_index.xml 路由中添加了我的存储链接,因此当 google 加载此路由时,它将被重定向到站点地图索引文件所在的存储路径。
Vue 路由文件:
{
path: '/sitemap_index.xml',
beforeEnter() { location.href = 'https://example.blob.core.windows.net/$web/sitemap_index.xml' }
},
为了使这条路线可以访问,我也将它们添加到 staticwebapp.config.json 文件中,因为它用于重写。
staticwebapp.config.json 文件:
{
"routes": [
{
"route": "/robot.txt",
"rewrite": "/robot.txt"
},
{
"route": "/sitemap_index.xml",
"rewrite": "/sitemap_index.xml",
"headers": {
"content-type": "text/xml"
}
},
{
"route": "/sitemap.xml",
"rewrite": "/sitemap.xml",
"headers": {
"content-type": "text/xml"
}
}
],
"navigationFallback": {
"rewrite": "index.html"
},
"mimeTypes": {
".json": "text/json"
}
}
现在它看起来很好,但是当我在谷歌上上传 sitemap_index.xml 路径时,我得到了一个 HTML 错误。显然 vue 应用程序首先加载,然后重定向到 xml 文件。因此,谷歌首先得到无效的 html 响应。
- 其次,我尝试将站点地图索引指向存储中的另一个站点地图索引。这没有引发任何错误,但没有发现任何 URL,所以我认为这也不起作用。
我没有选择。我需要知道如何在静态 Web 应用程序中编辑文件,或者如何在查看路由时动态访问 xml 文件,例如 sitemap_index.xml。提前致谢。