搜尋引擎最愛動態網址? 還是靜態網址?

原文: Dynamic URLs vs. static URLs
發表於:2008年9月22日,下午3: 20

在跟網路系統管理員溝通時經常會出現這種情形,一些廣為傳播的理念可能在過去是正確的,但是可能已不再切合目前的情況了。當我們最近在跟幾個朋友談及關於網址的結構時就碰到這種情況。其中一個朋友很擔心動態網址的使用,甚至認為“搜尋引擎無法處理動態網址”。另外一個朋友覺得動態網址對搜尋引擎來說完全不是問題,那些都是過去的事了。還有一個甚至說他從來都搞不懂動態網址和靜態網址相比有什麼區別。對於我們來說,這一刻使我們決定要好好研究一下動態網址和靜態網址這個話題。首先,讓我們來界定一下我們要談論的主題:

什麼是靜態網址?
一個靜態網址,顧名思義,就是一個不會發生變化的網址,它通常不包含任何網址參數。例如:http://www.example.com/archive /january.htm。您可以在搜尋框裡輸入 filetype:html 在Google上搜尋靜態網址。更新此種類型網址的頁面會比較耗費時間,尤其是當信息量增長很快時,因為每一個單獨的頁面都必須更改編譯代碼。這也是為什麼網站管理員們在處理大型的、經常更新的網站,像線上購物網站、論壇社區、博客或者是內容管理系統時,會使用動態網址的原因。

什麼是動態網址?
如果一個網站的內容存儲於一個資料庫,並且根據要求來顯示頁面,這時就可以使用動態網址。在這種情況下,網站提供的內容基本上是基於範本形式的。通常情況下,一個動態網址看起來像這樣:http://code.google.com/p/google-checkout-php-sample-code /issues/detail?id=31。 您可以通過尋找像? = & 這樣的符號識別出動態網址。動態網址有一個缺陷是不同的網址可以擁有相同的內容。這樣導致不同的用戶可能鏈向含有不同參數的網址,但是這些網址卻都含有相同的內容。這也是為什麼網路系統管理員有時候想要將這些動態網址重寫成靜態網址的原因之一。

我是不是應該讓我的動態網址看起來是靜態的呢?
在處理動態網址時,希望您能瞭解以下幾點事實:

  1. 要正確地生成和維護從動態網址到靜態化網址的重寫轉變實際上是一件很難的事情。
  2. 將原始的動態網址提供給我們會比較安全,請讓我們來處理諸如探測和避開那些有問題的參數的事情。
  3. 如果您想重寫網址,請去掉那些不必要的參數,同時請保持它動態網址的樣子。
  4. 如果您想提供一個靜態網址代替動態網址,那麼您應該切實地生成相應的靜態內容。

靜態和動態網址,Googlebot對於哪一個識別得更好呢?
我們碰到過很多網站管理員,像我們的朋友那樣,認為靜態或者看起來是靜態的網址對於網站的索引和排名是有優勢的。這種看法是基於這樣一個假設,即認為搜尋引擎在抓取和分析含有會話標識(session ID)和來源追蹤器(source tracker)的網址時是有問題的。然而,事實是,Google在這兩個方面都有了相當的進展。就點擊率來說,靜態網址可能略微有些優勢,因為用戶可以很容易地讀懂這個網址。但是,就索引和排名來說,使用資料庫驅動網站並不意味著明顯的劣勢。相比較將參數隱藏以使他們看起來是靜態的網址來說,我們更希望網站將動態的網址直接提供給搜尋引擎。

現在,讓我們來看一些有關動態網址的廣為傳播的看法,並且來糾正一些蒙蔽網站管理員的假說。:)

傳說:“動態網址不能被抓取。”
事實:我們可以抓取動態網址並且解釋不同的參數。如果您為了讓網址看起來像是靜態的,而隱藏那些可以給Google提供有價值資訊的參數,這樣做反而會給該網址的抓取和排名帶來麻煩。我們的建議是:請不要將一個動態網址改換格式以使其看起來是靜態的。盡可能地使用靜態網址來顯示靜態內容是可取的,但在您決定展示動態內容的情況下,請不要將參數隱藏起來從而使他們看起來像是靜態的,因為這樣做會刪除掉那些有助於我們分析網址的有用資訊。

傳說:“動態網址的參數要少於3個。”
事實:對於參數的數量是沒有限制的。但是,一個好的經驗是不要讓您的網址太長(這個適用於所有的網址,不論是靜態的還是動態的)。您可以去掉一些對於Googlebot來說不重要的參數,給使用者一個好看一點的動態網址。如果您不能確定可以去掉哪些參數,我們建議您將動態網址中所有的參數都提供給我們,我們的系統會弄明白哪一些是不重要的。將參數隱藏起來會影響我們正確地分析您的網址,我們也就不能識別這些參數,一些重要資訊可能也因此丟失了。

下面一些是我們認為您可能會存在疑問的一些問題。

這是否意味著我應該完全避免重寫動態網址?
這是我們的建議,除非您能確保您只是去掉多餘的參數,或能夠把所有有可能有不良影響的參數完整地刪除。如果您把自己的動態網址任意修改使其看起來像是靜態的,您要清楚這樣做是有風險的,有可能會導致有些資訊不能被正常地編譯和識別。如果您想給您的網站再增加一個靜態的版本,請您一定要提供一個真正意義上的靜態的內容,比如生成那些可以通過網站相應路徑而獲取的檔。如果您僅僅是修改了動態網址的表現形式,而沒有真正提供靜態的內容,那麼您有可能適得其反。請直接把標準的動態URL提供給我們,我們會自動找出那些冗餘的參數。

你能給我舉一個例子麼?
如果您有一個像下面這樣標準格式的動態網址:foo?key1=value&key2=value2,我們建議您不用改動它,Google會決定哪些參數可以去掉;或者您可以為用戶去掉那些不必要的參數。不過要慎重,僅僅去掉那些不重要的參數。這裡有一個含有多個參數的動態網址的例子:

www.example.com/article/bin/answer.foo?language=en&answer=3&sid=98971298178906&query=URL

  • language=en – 標明這篇文章的語言
  • answer=3 – 這篇文章含有數字3
  • sid=8971298178906 – 會話標識代碼是8971298178906
  • query=URL – 使這篇文章被找到的查詢是[URL]

並不是所有的參數都提供額外的資訊。所以將這個網址重寫為www.example.com/article/bin/answer.foo?language=en&answer=3 可能不會引起任何問題,因為所有不相關的參數都去掉了。

下面是一些經過認為修改而看起來像是靜態網址的例子。相比較沒有重寫、直接提供動態網址來說,這些網址可能會引起更多抓取方面的問題。

  • www.example.com/article/bin/answer.foo/en/3/98971298178906/URL
  • www.example.com/article/bin/answer.foo/language=en/answer=3/ sid=98971298178906/query=URL
  • www.example.com/article/bin/answer.foo/language/en/answer/3/sid/ 98971298178906/query/URL
  • www.example.com/article/bin/answer.foo/en,3,98971298178906,URL

如果您將動態網址重寫成如上所述的示例的話,可能會導致我們很多不必要的抓取,因為這些網址中都含有會話標識(sid)和查詢(query)參數的可變值,這無形中生成了很多看起來不同的URL,而他們包含的內容卻是相同的。這些格式讓我們很難理解通過這個網址返回的實際內容和參數URL以及 98971298178906是無關的。不過,下面這個重寫的例子卻將所有無關的參數都去掉了:
•    www.example.com/article/bin/answer.foo/en/3
盡管我們可以正確地處理這個網址,我們還是不鼓勵您使用這樣的重寫。因為它很難維護,而且一旦一個新的參數被加到原始的動態網址,那麼這個網址就需要馬上更新。不這樣做的話就會再次導致生成一個隱藏了參數的貌似靜態網址的URL。所以最好的解決方法是通常將動態網址保持他們原來的樣子。或者,如果您去掉不相關的參數,請記住一定要保持這個網址是動態的:
•    www.example.com/article/bin/answer.foo?language=en&answer=3
我們希望這篇文章能夠對您和我們的朋友有説明,使圍繞動態網址的各種推測清晰化。如果您有更多的問題的話,歡迎加入我們的網站管理員支援論壇進行討論。

One thought on “搜尋引擎最愛動態網址? 還是靜態網址?

發表迴響