创建一个meteor.js站点地图

Create a meteor.js sitemap

本文关键字:meteor js 站点 地图 一个 创建      更新时间:2023-09-26

站点地图很酷。如果我想要一个流星项目,我想我可以做下面的一个:

  1. 硬编码sitemap.xml文件并放入/public/文件夹。不是动态的,但很容易被谷歌找到。对于子页面较少的应用程序可能足够了。
  2. 使用流星路由器在/sitemap. XML(?)创建一个动态站点地图,并将其输出为XML。动态的,但不会很容易为谷歌找到,因为它是动态加载的(也许与蜘蛛包?)

但我都不太满意。我希望它是动态的,但仍存储在一个(最好)静态文件,很容易找到谷歌。或者类似的东西

最好的方法是什么?

如果有一种方法可以使用客户端路由器来动态生成站点地图,那么Meteor router

可能是可行的。

你需要流星路由器和流星http。流星路由器有一个陨石的先决条件,看起来你已经有了。

第一步是为sitemap。xml创建路由服务器端路由:

Meteor.Router.add('sitemap.xml', function() {
    //get sitemap data (below)
    return generated_sitemap;
});

和一个生成站点地图的函数:

我们需要router.js,不幸的是它只在客户端上运行。我们需要用meteor。http获取它。router.js文件基本上包含路由器代码的Meteor.Router.add位。将url调整到router.js文件可能存储的位置

routerdata = Meteor.http.get("http://localhost:3000/client/router.js").content 

然后我们需要从那里解析路由器数据(确保你使用了var,这样作用域不会破坏实际的路由器)

服务器端js

Meteor.Router.add('/sitemap.xml', function() {
    routerdata = Meteor.http.get("http://localhost:3000/client/router.js").content 
    var Meteor = {};
    Meteor.Router = {add:function(input) {return input}};
    //drag the data out of the routerdata, eval is quick and dirty but you could shackle it down further
    routers = eval(routerdata);
    //now generate the sitemap.xml data
    xmldata = '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
    for(var url in routers) {
        xmldata+="<url>'n";
        xmldata+="<loc>"+url+"</loc>'n";
        xmldata+="<lastmod>2013-03-03</lastmod>'n";
        xmldata+="<changefreq>daily</changefreq>'n";
        xmldata+="<priority>0.8</priority>'n";
        xmldata+="</url>'n";
    }
    xmldata+="</urlset>";
    return xmldata;
});

您可能需要进一步定制它,以确切地满足您的需求。我不能说我已经尝试过了,我不是很熟悉如何优化使用站点地图,但它可能会让你开始

这个包看起来很有希望:

https://atmosphere.meteor.com/package/sitemaps