动态slug与永久重定向或存储slug在数据库上

时间:2012-12-15 14:34:18

标签: python django seo slug

新闻页面上网址的最佳选择是:

动态生成slu ..从对象ID加载页面。如果slug不匹配,永久重定向到正确的slug。

myweb.com/542/my-news-item

我明白了:如果新闻标题被更改,那么slug会改变,但旧的slug会重定向到新的slug,所以我不知道这是否是查找问题。

OR:

即使新闻标题发生变化,静态slu will也永远不会改变。

myweb.com/my-news-item

我明白了:db上还有一个字段。如果我从根本上改变新闻标题,那么slu will将会非常不同

2 个答案:

答案 0 :(得分:1)

如果你想要更新slug而不破坏旧的url,你可以分开slug并链接列表视图中的最新内容,这些内容应该这样做:

class Article(models.Model):
    title = models.CharField() # etc

class ArticleSlug(models.Model):
    article = models.ForeignKey(Article)
    slug = models.SlugField(unique=True)
    date_created = models.DateTime(auto_now_add=True, editable=False)

    class Meta:
        get_latest_by = "date_created" 

在你的招募模板中你可以简单地调用最新的slug,但是你可能想要在url中有一些M / Y / D层次结构

<a href="/news/articles/{{ article.articleslug_set.latest }}/">{{ article.title }}</a>

如果您的网站获得了大量流量,您可能需要添加一个芹菜任务来检索最新的slug并将其复制到您的文章模型上的某个字段中。这将为您节省一些SQL JOIN。

答案 1 :(得分:0)

使用redirects app和保存后信号的组合如何guy wrote