2012-07-27 33 views
0

我知道與symfony2是非常平凡的通過路由系統獲得漂亮的URL,我喜歡它。但是,當路線參數僅基於slu I我必須通過slu find找到。如果我在URL中暴露實體鍵,pro/cons是什麼?

$em->getRepository('Bundle:Entity')->findOneBySlug($slug); 

我想結合這兩個參數,如計算器http://mysite.com/articles/234/the-title。只對SEO提出並且直接與實體ID(234)一起查找slug參數。

$em->getRepository('Bundle:Entity')->find($id); 

什麼是使用這種策略的親/缺點。我是對的嗎?

回答

1

如你所說,我會去和同時使用一個唯一的標識符和料塊,因爲你不必擔心獨特的蛞蝓這種方式。

但有一點你應該檢查一下slu is是否有效。 所以不要使用這樣的網址:/articles/{id}/{unchecked-slug},因爲如果你這樣做了,你可以使用不限數量的不同/惡意網址,即/ articles/123 /正確的標題和/ artcle/123 /一些髒字。

,所以我會建議使用這樣的事情:

$em->getRepository('Bundle:Entity')->findOneBy(array('slug' => $slug, 'id' => $id); 

我不是一個SEO專家,但我不認爲,這較短的網址是重要的,只要它包含有用的話,那可能成爲搜索的一部分。

1

從純粹的SEO角度來看,您希望擁有較短的網址,因爲它們傾向於吸引更多的點擊次數,並且更容易分享。然而,只迎合搜索引擎優化將是一個錯誤恕我直言。

向字符串添加一個唯一的標識符將是一件聰明的事情,並且會使事情更容易查找和維護。我建議將唯一標識符放在URL字符串的末尾以最大化「SEO效果」。

URL中的關鍵字可能是排名信號,但如果URL中找到的關鍵字與用戶的查詢匹配,則確實會提高點擊率。發生這種情況時,URL中的關鍵字會變成搜索結果頁(SERP)中的粗體。通過將該ID放在URL末尾,可以幫助確保slug中的關鍵字更有機會出現在用戶身上,這意味着更好的粗體顯示機會,這有望帶來更多的點擊率。

這裏是我建議:

http://example.com/articles/the-title-234

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。沒有人想記住這一點,它對搜索引擎沒有任何意義。