我知道使用 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);
使用此策略的优点/缺点是什么。我是对的吗?
最佳答案
我会按照您的建议去做,同时使用唯一标识符和 slug,因为这样您就不必担心唯一的 slug。
但是您应该做的一件事是检查 slug 是否有效。 所以不要使用这样的 URL:/articles/{id}/{unchecked-slug},因为如果这样做,您可以使用无限数量的不同/恶意 URL 访问同一篇文章,即/articles/123/the-correct-title 和/artcle/123/some-dirty-words。
所以我建议使用这样的东西:
$em->getRepository('Bundle:Entity')->findOneBy(array('slug' => $slug, 'id' => $id);
我不是 SEO 专家,但我认为较短的 URL 并不重要,只要它包含有用的词,就可能成为搜索的一部分。
关于url - 如果我在 url 中公开实体 key ,有什么优点/缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681604/