2009-05-29 79 views
2

網頁已移至使用以下網址:ASP.Net MVC - 路由對象ID ==標題 - 如何處理重複?

//weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx

即它們包括在網頁中的頁面標題,而不是有一些編碼的ID。

據我所知,這對搜索引擎優化很有用,也爲用戶找到他們希望輸入網址的正確頁面。

我想遵循這種方法,但不知道如何最好地實現它,特別是如何處理重複。

是一個數據庫觸發器,它根據標題創建url併爲任何重複項添加數字遞增後綴,這是最好的方法,如果是的話,這樣的觸發器會是什麼樣子?

回答

0

至少在Wordpress中,「slug」(他們稱之爲)從該項目的標題中生成一次並單獨存儲在數據庫中。如果兩個「slu」「發生碰撞,它會在末尾附加-1-2等。如果您在提交表單中添加(可選)字段以允許用戶插入自己的字段,我個人更喜歡 - 它允許用戶指定比my-long-article-is-hard-to-type更短的URL。

+0

我同意。只要不創建名稱衝突,「slug」也是可編輯的。無論如何,用戶可以查看和編輯該字段,因此如果他們選擇進行更改,他們可以對其進行控制。 – 2009-05-29 14:26:25

1

代替基於標題的id,他們可以使用基於日期和標題的id(2007/12/03/asp-net-mvc-framework-part-2-url-routing) 。因此,如果您在一天內沒有相同標題的文章(這不是太嚴格的限制),則會刪除重複項。

+0

謝謝,好點。雖然在我的情況下,很有可能兩個參賽作品在同一天擁有相同的標題。 – Richbits 2009-05-29 12:49:03

0

您必須在您的應用程序中對此概念進行建模。根據標題生成的URL可以是自動,但不能是隱形。 WordPress(也可能是其他CMS)也做得很好 - 他們會根據您輸入的信息默認一個URL,但URL的「關鍵」部分對用戶是可見的和可編輯的,而唯一性在適當的級別執行(全球,每月,每天 - 無論如何)。

我相信,讓URL生成完全不可見將導致用戶混淆錯誤。

0

你可以做同樣的事情,這樣做。也就是說,這個slu is只能在GoogleJuice那裏。這兩個URL解析爲同一件事:

ASP.Net MVC - route object id == title - how to deal with duplicates?

ASP.Net MVC - route object id == title - how to deal with duplicates?

所以,在你給的例子,如果CMS給每發佈一個唯一的數字標識符(我估計很有可能),那麼你可以將其包含在URL:

http://weblogs.asp.net/scottgu/archive/2007/12/03/1234/asp-net-mvc-framework-part-2-url-routing

在這個例子中,符號1234是這篇文章的標識符。