添加URL友好的slu

时间:2015-06-23 09:05:51

标签: meteor iron-router meteor-helper

目前我所拥有的是

http://www.example.com/_id

而不是在网址中显示生成的id,而不想在url中显示帖子的标题。如

http://www.example.com/this_is_a_new_post

我必须在集合中添加slug字段吗?是不是有任何解决方案,我可以使用它可以建立一个友好的网址,我不必像slug那样创建另一个冗余字段?

P.S。我不想使用包。我想这可以在没有包装的情况下完成。

1 个答案:

答案 0 :(得分:0)

您可以做的最简单的事情就是使用/:title。 Iron会自动解码标题。 Firefox很好地处理这些URL。它只是转换它们,因此用户可以看到包括所有特殊字符在内的实际标题。此外,所有铁助手都正确编码URL字符串。

要创建一个slug,你可以使用类似这样的函数:

createURLSlug = function (url) {
  var slugRegex = /[^\w\-\.\~]/g
  while(slugRegex.test(url)) {
    url = url.replace(slugRegex, '-')
  }
  return url
}

我使用wiki page on of allowed URL characters作为此正则表达式的参考。

如果您使用SimpleSchema,还可以使用autoValue:

...
  slug: {
    type: String,
    autoValue: function () {
      return createURLSlug(this.field('title').value)
    }
  }
...