2016-09-22 22 views
2

我有一個網站,我實現多語言。多語種網站和機器人檢測

我爲每個子域劃分我的語言。

fr-fr.mywebsite.com 
es-es.mywebsite.com 
www.mywebsite.com // root domain => neutral language for bots 

在子域上,如果沒有設置語言cookie,我使用子域作爲語言代碼。

在主域(www),如果沒有設置語言Cookie的,則:

  • ,如果它是一個機器人,我使用中性語言
  • 如果它不是一個機器人,我檢測用戶語言使用「接受語言」標題。

如何安全檢測它是否是機器人?我在這個問題上讀了舊的主題,但人們只是使用「接受語言」,因爲機器人沒有發送這個標題,但是,迄今爲止,谷歌發送這個標題...

是否安全地檢測它是否是一個機器人,或反向,以檢測它是否是一個Web瀏覽器? 因爲如果沒有檢測到機器人,它將被編入錯誤語言的網站。

想法?

+1

爲什麼不使用語言註釋?通過這種方式,機器人將會找到替代語言頁面 – Cesar

+0

。但主域名必須自動檢測用戶語言:) – Ndrou

+1

Hi @Ndrou,我仍不明白爲什麼你需要找到用戶是否是機器人,如果請求有一個有效的「接受語言」頭,你可以發送它適當的語言網站,如果沒有,到您的主要或默認語言網站,如果是機器人,他將能夠使用語言註釋找到所有altenate語言並將它們編入索引 – Cesar

回答

1

假設您使用PhP,您可以請求HTTP_USER_AGENT並查看用戶代理是否爲'googlebot'。

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "googlebot")) 
{ 
    // what to do 
} 

下面是一個問題的鏈接(以及我從中拉出的例子)。

how to detect search engine bots with php?

+0

是的,但不僅有googlebot,有很多機器人,如雅虎,Bing,Yandex等...如何確保不會忘記一個? – Ndrou

+0

你可以添加所有這些機器人的名字,只是谷歌和查找機器人的名稱。你也可以添加一個日誌,並且只記錄'HTTP_USER_AGENT'的值,然後對列表進行排序,看看是否有類似bot的名字出現。所有知名的搜索引擎和合法的會命名他們的機器人。 – Matthew