2012-09-01 28 views
0

許多新聞站點的慣例是在URL中包含ID和slug。該ID用於查找實際文章,並且爲了搜索引擎優化目的而包含slu is。通過這種方式,可以改變slug以匹配文章標題中的變化,而不會渲染任何以前的書籤。使用MongoDB的Django-nonrel的明智的URL模式

在URL中使用MongoDB ObjectId非常麻煩,因爲它會創建很長的URL(http://www.mysite.com/article-504119a051e2726c9aa28ea1/my-article-title.html) - 有沒有更好的解決方案?

回答

2

如果您的用例有更合適的選擇,則不必使用MongoDB的default ObjectID。例如,您可以使用較短的值(如時間戳或增量計數器)來定義自定義_id字段(請參閱:How to make an auto-incrementing id field)。如果您的用例發佈文章並且每分鐘都沒有數百篇文章,那麼您可能會得到具有與隨機值串聯的unix時間戳的_id的合理唯一性。

如果你的slu are是獨特的(或者你可以接受這個限制),你可以使用slu as作爲_id甚至更​​短的網址。關於_id的警告是他們不能改變,所以單獨索引的slug字段會給你更多的靈活性。

考慮到你的使用slu for的目標,你可能想要添加一些技巧,以便有一個302重定向到當前的「規範網址」(有正確的slu field字段),如果提供替代slu is。否則,如果只檢查了網址的id部分,您可能會對重複內容產生潛在的SEO處罰。