站点地图很酷。如果我想要一个我的流星项目,我想我可以做以下其中一个:
但这对我来说都不是很令人满意。我希望它是动态的,但存储在一个(最好)静态文件中,谷歌很容易找到它。或类似的东西。
最好的方法是什么?
答案 0 :(得分:3)
如果有一种方法可以使用客户端路由器动态生成站点地图,可能可以使用Meteor Router
你需要meteor router和meteor的http。流星路由器的前提条件是meteorite,它看起来就像你已经拥有的那样。
因此,第一步是为具有服务器端路由的sitemap.xml创建路由:
Meteor.Router.add('sitemap.xml', function() {
//get sitemap data (below)
return generated_sitemap;
});
和生成站点地图的函数:
我们需要router.js
,遗憾的是只能在客户端上运行。所以我们需要用meteor.http来获取它。 router.js
文件基本上包含路由器代码的Meteor.Router.add
位。将网址调整到可能存储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;
});
您可能需要根据自己的需要进一步自定义它。我不能说我已经尝试过上面的内容我并不熟悉如何最佳地使用站点地图,但它可能会让你有个开始
答案 1 :(得分:2)
这个包看起来很有希望: