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



我正在处理一个有多个租户的vue-js项目。我正在努力寻找一种解决方案,在该解决方案中,我可以为每个租户动态生成一个xml文件。租户由url标识,因此example.com/sitemap.xml将是一个站点地图,租户2将是example1.com/sitemap.xml和不同的站点地图。这两个url都访问相同的服务器,但由于域的原因,加载的数据不同。反过来,我也需要动态生成sitemap.xml。

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

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

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

任何帮助都将不胜感激。

谢谢。

如果您有一个常规的Vue应用程序,它在客户端而不是服务器端运行。因此,对于所有路由,您的Web服务器都会返回index.html。加载后,vue-router会在客户端上进行初始化,并检测路由以显示适当的视图/组件。

因此,对example.com/sitemap.xml的请求返回index.html

我猜网络爬虫在响应中期望以下标头,以及站点地图的XML文档的响应主体。

content-type: text/xml; 

如果爬网程序运行javascript,您可能可以在客户端生成,但我建议最好在服务器端生成并返回纯旧的XML。您的服务器端代码应该能够生成此代码,并根据租户进行切换。然后在服务器中为/sitemap.xml放置一个特殊的路由,以不返回vue应用

最新更新