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

时间:2018-11-16 21:06:02

标签: javascript xml vue.js routing sitemap

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

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

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

我还找到了上面的包裹和另一个类似的包裹,它通过允许我在路线更改之间进行干预来完成我需要的工作。但是,我不确定这是否允许我返回xml,该示例似乎具有逻辑,然后以next()结尾,想知道是否可以在那一刻实际上返回xml文档而不是调用next。 >

任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

我猜想Web爬网程序会在响应中包含以下标头,以及站点地图XML文档的响应正文。

content-type: text/xml; 

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