使用Meteor进行SEO的动态URL变量

时间:2015-05-11 17:32:01

标签: meteor url-rewriting seo iron-router

我正在使用ms-seo package的Meteor应用。我想知道是否有办法让网址更加SEO友好?

Router.route('/item/:_id', {
  name: 'item.detail',
  controller: 'ItemsController',
  action: 'detail',
  where: 'client',
  onAfterAction: function() {
    var data = this.data();
    if (data) {
    SEO.set({
      title: data.title + ' - ' + data.company + ' (' + data.city + ')',
      meta: {
        'description': data.descriptionHTML
      }
    });
  }
});

虽然这很有效,但它生成的网址是/item/5RTxofPPn3LwifP24,我想在网址中按data.title,这样我就可以/item/i-am-a-lower-case-dash-replaced-unique-title/

有包裹吗?

2 个答案:

答案 0 :(得分:5)

你需要创建一个slug。因此,您的收藏将包含以下字段:

  • _id
  • 标题
  • 蛞蝓
  • 含量

然后你可以使用像https://atmospherejs.com/yasaricli/slugify之类的东西将你的标题转换为slug。基本上它的作用是转换名为" Unique Shopping Cart Item"到" unique-shopping-cart-item。"

然后在路由器中传递slug作为参数。

Router.route('/blog/:slug',{
    name:'blogPosts',
    waitOn: function() { return Meteor.subscribe('collection'); },
    data: function(){
        var slug = this.params.slug;
        return Collection.findOne({slug:slug});
        // this is saying search the collection's slug for the passed in parameter which we're also calling "slug"
    }
});

答案 1 :(得分:0)

您可以尝试slugify推送data.title作为一个漂亮的网址。