我正在使用流星來創建簡單的博客系統。對於站點地圖文件,我使用的是this包。直到服務器重新啓動流星時才創建站點地圖
我添加了一些初始化在服務器啓動功能(創建一些後)數據和在服務器下面的代碼(服務器/ sitemaps.js),用於爲每個類別創建站點地圖(例如,對於第一類和等sitemap1.xml) :
function sitemapOutput(categoryName){
var out = [], posts = Posts.find({ category: categoryName }).fetch();
_.each(posts, function(post) {
out.push({
page: post.url(),
lastmod: post.insertDate,
changefreq: 'weekly'
});
});
return out;
}
Categories.find().forEach(function(Category, index) {
sitemaps.add('/sitemap' + (index+1) +'.xml',
function(){ return sitemapOutput(Category.name); });
});
而且我已經啓動這樣的:(服務器/ startup.js)
Meteor.startup(function() {
// some post and category created here
});
但站點地圖並不存在,直到服務器重啓(我robots.t xt文件也是空的),但當服務器重新啓動sitemaps和robots.txt內容爲我創建。
我認爲帖子插入sitemaps.js之後,但問題是什麼人,以及如何解決這個問題?
新的嘗試:
我嘗試新的解決方案如下圖所示,但這代碼也沒有工作。 (我想創建單獨的sitemap文件爲每10000範疇防止出現大的網站地圖和谷歌地圖錯誤):
for (var i=0;i<=Math.round(Categories.find().count()/10000);i++) {
sitemaps.add('/sitemap' + i +'.xml', function(){
var out = [];
Categories.find({}, {sort: {insertDate: 1} ,limit: 10000, skip: i * 10000}).forEach(function(Category) {
out.push({
page: "/category/" + Category.title + "/" + Category._id,
lastmod: Category.insertDate,
changefreq: 'weekly'
});
});
return out;
});
}
的robots.txt節目Sitemaps文件正確,但是所有的網站地圖是空的是這樣的:
<urlset> </urlset>
什麼時候sitemaps.add()運行?我認爲它在服務器重新啓動,但新的嘗試令我失望,我認爲我的猜測是不正確的,如果sitemaps.add()運行,爲什麼它是空的。
你的文件夾結構是什麼樣的? – forallepsilon
我描述的問題。我在服務器文件夾中有一個sitemaps.js – b24