動態生成的網頁:
對于那些動態生成網頁,我們這些實際的訪問者可以通過肉眼看到。但對于大多數搜索引擎的蜘蛛程序卻往往是不可見的,這也就是動態網頁很難被搜索引擎的SPIDER檢索的原因。因而,要想讓你的動態網頁能夠出現在搜索引擎的搜索結果中,只要保證你的網站內容對搜索引擎是可見的,即搜索引擎的Spider程序能夠看到你網站的內容就可以了
所謂動態網頁一般指的是采用ASP,PHP,Cold Fusion,CGI等程序動態生成的
頁面,該網頁中的大部分內容來自與網站相連的數據庫。在網絡空間中并不存在這個頁面,只有接到用戶的訪問要求后才生成并傳輸到用戶的瀏覽器中。而且由于訪問者能夠實時得到他們想要的數據,動態網頁往往容易給人留下深刻的印象。此外,動態網頁還具有容易維護和更新的優點。例如,對于一個新產品或價格的調整。網站管理員只要對數據庫做一下簡單的改動就可以了,根本不需要去修改每個單獨的靜態頁面。
我們可以看出,從用戶角度來考慮,動態網頁確實非常棒。但如果在搜索引擎的角度來看,結論卻不同了。
動態網頁的問題所在:
問題就出在這些動態網頁在網絡空間中并不是實際存在的,只有當用戶在變量區中輸入一個值以后它們才會生成。而我們大家也都知道,搜索引擎的Spider再聰明,它也只是一個搜索程序,它們無法象真正的人那樣選擇變量并輸入數值。
亦可將查詢編入主頁上的一個鏈接中,使得該鏈接成為一個預先定義的網站目錄的查詢。用戶可在一個搜索表格中鍵入查詢條件來查詢,通常動態腳本需要某些信息來返回頁面內容,最常見的如Cookie數據,Session ID或一個環境變量。但對搜索引擎的Spider程序來說,它們壓根不可能知道去使用你的搜索功能,或者該問什么問題。就是因為如此,Spider對網站的檢索往往會在一個動態站點前不得不止步。
此外,在動態頁的URL中包含了問號(?)和百分號(%)。還有一些符號諸如&,%,+和$等在一個動態頁的URL中也經常能看到。這樣的URL被稱作“環境變量”(query string)。不過大多數SPIDER都無法解讀符號“?”后的字符。例如,對于這樣一個URL:http://www.americanbooks.com/cgi-bin/items.cgi?name=naturaldiet大多數SPIDER都只能讀取符號“?”之前的字符。URL中的“?”對它們來說是一個“停止標記”,這樣它們最終檢索到的URL只能是:http://www.americanbooks.com/cgi-bin/items.cgi
很顯然,由于這個URL并不實際存在,所以它們一無所獲。因此,如果你的整個網站或網站上有大部分網頁都是采用動態來生成的,為了使SPIDER易于讀取你網站上的內容,你需要對網站做一定的修改。
還有一些搜索引擎在對頁面進行檢索時往往也會拒絕對cgi-bin目錄下的靜態頁面(即被保存成靜態頁面的動態頁)URL進行檢索。例如,對下面兩個URL它們就不提供檢索:
http://www.americanbooks.com/cgi-bin/items.phpl
http://www.americanbooks.com/cgi/items.phpl
搜索引擎為何不讀取符號“?”后的內容:
搜索引擎的SPIDER不愿意讀取放在cgi-bin目錄下的網頁,或是URL中包含了符號“?”的字符。其原因就在于,如果在CGI中提供了“無窮”數量的URL,那么SPIDER往往就會因為對這些“無窮”網頁的檢索而被牢牢套住,陷入死循環。這就是所謂的蜘蛛陷阱(spider traps)。數據庫程序對SPIDER亦有可能創建一個與此類似的情形。因而為避開可能的陷阱,Spider對于那些帶有符號“?”的URL中的“?”之后的字符一概不予讀取。
倘若Spider被你的服務器套住,不只是對Spider本身不妙,Spider對你網站頁面的重復訪問請求也會導致你的服務器系統徹底癱瘓。
以http://www.americanbooks.com/cgi-bin/items.cgi?name=naturaldiet 為例:從其URL中我們可以看出,它表明網站americanbooks.com中提供有天然減肥產品相關的內容。遺憾的是,由于Spider不支持動態生成頁,從而導致了該動態頁上的相關內容無法得到搜索引擎的索引。假設現在有一個競爭者,他也有一個與天然減肥產品類似內容的網頁,但由于他的網頁是靜態頁面,所以能夠得到搜索引擎的索引。那么可想而知,那些搜索“天然減肥產品”的用戶最后訪問的會是誰的網站。而且,就算americanbooks.com上提供的具體內容比它的競爭者再好又能怎樣呢?就因為它無法出現在搜索引擎的搜索結果中,所以只能把網上銷售的好機會拱手讓給他的競爭者了。
對這個問題的解決方案可以遵循一個思想:即更改動態網頁的URL,使URL中不再包含符號“?”“=”和其它類似的符號,看起來象一個靜態的URL。不同程序開發的動態頁的不同解決方案:
• CGI/ Perl
如果你在網站中使用的是CGI或者Perl,可用一個腳本拾取環境變量前的所有字符,再將URL中剩余的字符賦值給一個變量。這樣,你就可以在URL中使用該變量了。
路徑信息(或腳本名稱)是動態應用程序中的一個變量,該變量包含了完整的URL地址和環境變量信息。這樣,腳本就從路徑信息變量中獲取環境變量前的字符,并將剩余字符代入一變量。
不過,對于那些內置了部分SSI(Server-Side Include:服務器端嵌入)內容的網頁,主要的搜索引擎都能夠提供索引支持。那些以.shtml為后綴名的網頁也被解析成SSI文件,相當于通常的.phpl文件。但如果這些網頁在其URL中使用的是cgi-bin路徑,則仍有可能不被搜索引擎索引。
ASP
ASP(Active Server Pages: Web 服務器端動態網頁開發技術)被用于基于微軟的網絡服務器中。使用ASP開發的網頁,一般后綴名為.asp。ASP 由于其簡單功能實用等方面受到廣大朋友的喜歡,再加上微軟的強大支持,可說是時下網頁開發最為流行的語言之一。只要避免在URL中使用符號“?”,大多數搜索引擎都能夠支持用ASP開發的動態網頁。
那么對用了“?”的URL怎么辦呢?針對這個問題,有家名叫“Exception Digital Enterprise Solutions”的公司推出了他們的解決方案 –xqasp。這是一個升級軟件。它允許將URL中的符號“?”通過網絡服務器轉換為“/”。更多相關信息請訪問:http://www.xde.net/products/product_xqasp.php 還有一些價格相對低廉一些的解決方案,象ASPSpiderBait和 PortalPageFilter。
Cold Fusion
如果你使用的是Cold Fusion,那么你就需要在你的服務器端重新對其進行配置。用Cold Fusion進行開發的網頁一般都以.cfm為文件擴展名。一般情況下,數據庫使用符號“?”來取回網頁。你可對Cold Fusion設置重新進行配置,使其能夠將一個環境變量中的符號“?”用符號“/”代替,并將替換后的數值傳給URL。這樣一來,最后到達瀏覽器端的就是一個靜態的URL頁。即對于URLhttp://www.americanbooks.com/items.cfm?item_id=11667,最后返回瀏覽器的將是 http://www.americanbooks.com/items.cfm/11667,當搜索引擎對該轉換后的文件進行檢索時,它不會遭遇“?”,因而可繼續對整個動態頁的索引,從而使你的動態網頁對搜索引擎仍然具有可讀性。
Apache 服務器
Apache是最流行的HTTP服務器軟件之一。它有一個叫做 mod_rewrite的重寫模塊,該模塊能夠使你將包含環境變量的URL轉換為能夠為搜索引擎支持的URL類型。不過Mod_rewrite不是Apache軟件安裝中的缺省模塊,所以你應當與你的主機托管公司進行協商,看看在你的服務器上是否有此模塊。
還是用上面的URL作為例子:使用mod_rewrite模塊后,該URL http://www.americanbooks.com/items.php?cat=natural_diet 就變成了如下格式: http://www.americanbooks.com/natural_diet/index.php 欲了解更多該模塊的相關信息,請訪問http://httpd.apache.org/docs/mod/mod_rewrite.phpl
可通過付費收錄程序直接提交動態網頁:
直接將動態網站提交到AltaVista可增加你的網站為其收錄的機會。如果將其經由AltaVista或Inktomi的付費收錄程序進行提交,就一定能夠保證網站的收錄。
文件擴展名:
如今,你的文件名后綴是什么。對搜索引擎來說已經不再是問題了,即使你的網頁不是以.phpl或.php為擴展名的,只要在URL中不包含符號“?”,仍有可能得到索引。相形之下,搜索引擎Northern ight尤為靈活,它能夠索引任何以.phpl, .php, .shtml, .stm, .asp, .phtml, .cfm, .php3, .php, .jsp, .jhtml, .asc, .text和.txt為擴展名的文件。不過它對后綴是.cgi的文件仍然不提供支持。如果你的網站上存在它不支持的擴展名文件,它會在網站提交的過程中通知你。
結束語:
問問你自己,是不是確實需要使用動態網頁?數據庫通常用作頁面生成工具,你可以用它創建靜態頁面,尤其對于網站上不常更動的那些區域,可以考慮使用數據庫來生成靜態的頁面內容。為了保證搜索引擎的索引,你也可以考慮為你的動態內容創建鏡象靜態的網頁。
大多數的搜索引擎還是不習慣對動態網頁的索引,到現在也如此。這是由于對一個動態生成網頁的檢索可能會導致搜索引擎的Spider掉進死循環的“陷阱”中而無法脫身。不過現在情況正在逐漸得到改善。 最先支持動態網頁的搜索引擎是Google,在兩千年底它已經能夠索引動態頁面(包括URL中的“?”)。此外,HotBot及其它一些搜索引擎也開始支持動態頁面。
雖然這些搜索引擎能夠支持動態網頁,但為了確保其Spider程序免遭死循環之災,搜索引擎將不會對來自動態生成頁面中的鏈接進行深入訪問。所以我建議大家要稍微多花點時間在你的動態生成網頁上,并確保它們中的每一個都能夠被搜索引擎索引到。事實上,最后你會發現,你所花費的這些時間絕對是一個非常棒的投資-同時它還能夠為你的網站來更多的訪問量。