0

我知道使用 symfony2 通过路由系统获取漂亮的 url 非常简单,我喜欢它。但是当路由参数仅基于 slug 时,我必须通过 slug 找到。

$em->getRepository('Bundle:Entity')->findOneBySlug($slug);

我正在考虑结合两个参数,例如stackoverflow http://mysite.com/articles/234/the-title。只为 SEO 保留 slug 参数建议并直接使用实体 id (234) 查找。

$em->getRepository('Bundle:Entity')->find($id);

使用此策略的优点/缺点是什么。我是对的吗?

4

3 回答 3

1

我会按照您的建议使用唯一标识符和 slug,因为您不必担心这种方式的唯一 slug。

但是你应该做的一件事是检查蛞蝓是否有效。所以不要使用这样的 URL:/articles/{id}/{unchecked-slug},因为如果你这样做,你可以使用无限数量的不同/邪恶 URL 访问同一篇文章,即 /articles/123/the-正确的标题和 /artcle/123/some-dirty-words。

所以我建议使用这样的东西:

$em->getRepository('Bundle:Entity')->findOneBy(array('slug' => $slug, 'id' => $id);

我不是 SEO 专家,但我不认为较短的 URL 有那么重要,只要它包含有用的词,这可能是搜索的一部分。

于 2012-07-27T07:47:32.830 回答
1

从纯粹的 SEO 角度来看,您希望 URL 更短,因为它们往往会吸引更多点击并且更容易分享。但是,恕我直言,只迎合 SEO 将是一个错误。

向字符串添加唯一标识符将是一件聪明的事情,并且会使事情更容易查找和维护。我建议将唯一标识符放在 URL 字符串的末尾以最大化“SEO 效果”。

URL 中的关键字可能是排名信号,但如果 URL 中找到的关键字与用户的查询匹配,它们确实会提高 CTR。发生这种情况时,URL 中的关键字在搜索结果页面 (SERP) 中变为粗体。通过将 ID 放在 URL 的末尾,您可以帮助确保 slug 中的关键字有更好的机会出现在用户面前,这意味着更有可能被加粗,这有望带来更多的点击率。

这是我的建议:

http://example.com/articles/the-title-234

于 2012-07-27T05:52:25.860 回答
0

到目前为止还没有人建议它,所以我将提供 WordPress 的功能。如果数据库中已经有一个与提供的相同的永久链接,您只需在最后连接一个计数器。

http://example.com/blog/my-article

becomes

http://example.com/blog/my-article-2

becomes

http://example.com/blog/my-article-3

eywu 建议的方法是第二好的,但这只是因为您在永久链接中仍然有完整的 ID。没有人想记住这一点,它对搜索引擎没有任何意义。

于 2012-07-27T13:45:29.393 回答