代码之家  ›  专栏  ›  技术社区  ›  Maxi Pereyra

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

  •  0
  • Maxi Pereyra  · 技术社区  · 6 年前

    我正在开发一个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。

    任何帮助都将不胜感激。

    谢谢您。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Morgan Philo    6 年前

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

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

    我猜web爬虫在响应中需要以下头,以及站点地图的xml文档的响应体。

    content-type: text/xml; 
    

    如果爬虫程序运行javascript,您可能可以在客户端生成,但我建议最好生成服务器端并返回普通的旧xml。您的服务器端代码应该能够生成这个并基于租户进行切换。 然后在服务器中为/sitemap.xml设置一个特殊的路由以不返回Vue应用程序