使用 Vue.js 动态返回站点地图

Dynamically returning a sitemap with Vue.js

我正在开发一个有多个租户的 vue js 项目。我试图找到一个解决方案,我可以为每个租户动态生成一个 xml 文件。租户由 url 标识,因此 example.com/sitemap.xml 将是一个站点地图,租户 2 将是 example1.com/sitemap.xml 和另一个站点地图。两个 url 都访问了同一台服务器,但由于它们的域不同而加载了不同的数据。反过来,我还需要动态生成 sitemap.xml。

我一直在做一些研究,我在我的项目中使用了路由,但我不确定我是否可以为实际文件名设置路由,如果可以,是否可以 return xml 通过 javascript 直接从 vue 响应。我之前尝试过类似的方法来在我的应用程序之外生成 html 。所以我有一个名为 /test 的路由,它将加载一个名为 test 的组件,然后该组件将具有 javscript 代码,用其他一些 html 替换 html 文档。这可能是一种使用方法吗?

https://www.npmjs.com/package/vue-router-middleware

我还找到了上面的包和另一个类似的包,它允许我在路由更改之间进行干预,看起来可以满足我的需要。但是,我不确定这是否允许我 return xml,这个例子似乎有逻辑,然后以 next() 结束,想知道我是否可以不调用 next 而只是 return xml 文档。

如有任何帮助,我们将不胜感激。

谢谢。

如果你有一个普通的 Vue 应用程序,它 运行 在客户端而不是服务器端。因此,对于所有路由,您的网络服务器 returns index.html。加载后,vue 路由器在客户端初始化并检测路由以显示适当的 view/components.

所以请求示例。com/sitemap.xml returns index.html

我猜网络爬虫期望响应中包含以下 header,以及 XML 站点地图文档的响应 body。

content-type: text/xml; 

如果爬虫 运行 javascript,您也许可以在客户端生成,但我建议生成服务器端和 return 普通旧 [=30] 更好=].您的服务器端代码应该能够生成此代码并根据租户进行切换。 然后在服务器中为 /sitemap.xml 设置一条特殊路由,而不是 return vue app