程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> Google網站管理員工具的驗證問題

Google網站管理員工具的驗證問題

編輯:PHP綜合

Google網站管理員工具的驗證方式有兩種,一個是通過Html文件,或一種是通過meta標簽。通常情況下,這兩個方式直接就可以通過驗證了。但是也有不同的情況,就是今天我遇到的情況!

我按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,但有時有別的用處,也是沒有辦法的事! 只能這樣了!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved