我知道symfony2非常简单,通过路由系统得到漂亮的网址,我喜欢它。但是当路线参数仅基于slu g时,我必须通过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);
使用此策略的优点/缺点是什么?我是对的?
答案 0 :(得分:1)
从纯粹的SEO角度来看,您希望拥有一个较短的网址,因为它们往往会吸引更多点击次数并且更容易分享。然而,仅仅迎合SEO将是一个错误恕我直言。
为字符串添加唯一标识符将是一件明智的事情,并且可以使查找和维护更容易。我建议将唯一标识符放在URL字符串的末尾,以最大化“SEO效果”。
网址中的关键字可能是排名信号,但如果在网址中找到的关键字与用户的查询匹配,它们实际上会提高点击率。发生这种情况时,URL中的关键字会在搜索结果页面(SERP)中以粗体显示。通过将ID放在URL的末尾,您可以帮助确保slug中的关键字更有可能出现在用户身上,这意味着更有可能被加粗,这有望带来更多的点击率。< / p>
以下是我的建议:
答案 1 :(得分:1)
我会按照您的建议去使用并使用唯一标识符和slug,因为您不必担心这种独特的slu ..
但有一件事你应该检查slug是否有效。 因此,请不要使用以下网址: / articles / {id} / {unchecked-slug} ,因为如果您这样做,您可以使用无限数量的不同/邪恶网址访问相同的文章,即/ articles / 123 / the-correct-title和/ artcle / 123 / some-dirty-words。
所以我建议使用这样的东西:
$em->getRepository('Bundle:Entity')->findOneBy(array('slug' => $slug, 'id' => $id);
我不是搜索引擎优化专家,但我不认为,较短的网址非常重要,只要它包含有用的字词,这可能是搜索的一部分。
答案 2 :(得分: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。没有人想要记住这一点,它对搜索引擎毫无意义。