簡體   English   中英

創建一個meteor.js網站地圖

[英]Create a meteor.js sitemap

站點地圖很棒。 如果我想要一個用於流星項目,我想我可以執行以下一項操作:

  1. 硬編碼sitemap.xml文件,並將其放在/ public /文件夾中。 不是動態的,但Google容易找到。 對於子頁面很少的應用程序可能就足夠了。
  2. (根本沒有嘗試過)使用流星路由器在/sitemap.xml(?)創建動態站點地圖,並將其輸出為XML。 動態的,但由於它是動態加載的(可能是帶有可抓取的軟件包?),因此Google很難找到它

但是,兩者都不令我滿意。 我希望它是動態的,但要存儲在一個(最好是)靜態文件中,該文件很容易被Google找到。 或類似的東西。

最好的方法是什么?

如果有一種方法可以使用客戶端路由器動態生成站點地圖,則可能使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM