我按Google的說明,上傳了google的html文件到網站的跟目錄,但就是無法通過驗證,報錯是:我們檢測到您的 404(找不到文件)錯誤頁在標頭中返回了 200 (成功) 狀態。 從說明上來看,他應該是也查我網站的404頁面,而我的404頁面是返回了200,而不是404。于是我隨便打了一下一個錯誤的頁面,發現,返回確實是200。那么我是不是把這個404頁面加一個header 404就可以了呢? 是的: 只在要404頁面的頭部加上:header("HTTP/1.0 404 Not Found");就可以了! 這樣,驗證就通過了! 但是,我這個404頁面其實不是單純的404頁面,我還想讓Google收錄呢,而如果返回404,Google就不收錄了。不能為了驗證這個,我就不作200了,那么怎么呢? 我想了一下,Google如果過來訪問我的404,他的user agent一定不一樣,于是,我在服務器端把所有訪問的user agent 都記錄一下,發現了Google在作這個驗證時,共訪問我404頁面3次,而且三次的uset agent 都是不一樣的,分別是以下: Google-Sitemaps/1.0 Google-Site-Verification/1.0 Mozilla/3.0 (compatible; Indy Library) 正常的Google爬蟲是不是用這三個user agent的,從字面上來看,一個是google驗證的,一個是google sitemap的,另一個應該是一個開源的什么東西! 所以,在404的開頭如果判斷一下user agent,如果是三個,就返回404,否則全是200就行了: <?php $googleArray = array( 'Google-Sitemaps/1.0', 'Google-Site-Verification/1.0', 'Mozilla/3.0 (compatible; Indy Library)' ); if(in_array($_SERVER['HTTP_USER_AGENT'], $googleArray)){ header("HTTP/1.0 404 Not Found"); } else{ header("HTTP/1.0 200 OK"); } ?> OK,這樣,驗證就通過了!但這樣,說實在的不太好,404就應該是返回404,但有時有別的用處,也是沒有辦法的事! 只能這樣了!
|