2011-11-23 82 views
2

我有一個分類網站。在這個網站上,我存儲在數據庫中,用戶訪問歷史目的的每個產品頁面,以便他可以查看他訪問的最後一個產品。php代碼排除谷歌

問題是,當googlebot和其他人進入我的網站時,數據庫充滿了數以千計的entrys,因爲它存在谷歌訪問的上千個產品頁面。

我試着用$_SERVER['HTTP_USER_AGENT']來試圖找出當前用戶是否是googlebot,如果是的話,不要在分貝中弄疼頁面瀏覽量,這樣它就不會被不友好的結果發送垃圾郵件,但他們似乎都沒有工作,因爲我得到谷歌IP的,並在我的數據庫中識別它們。

你們中的任何一個人都知道在PHP中使用的一種好方法,以確保谷歌呆在外面?

+0

你不能使用標準的robots.txt嗎? http://en.wikipedia.org/wiki/Robots_exclusion_standard –

+2

@JimH .:我認爲提問者想要的只是不計算來自Google的瀏覽量,並不實際上將Google排除在網站之外。 – EdoDodo

回答

1

您可以使用以下snippit,它應該檢測GoogleBot並且不會存儲到數據庫。

if (!strpos($_SERVER['HTTP_USER_AGENT'],"Googlebot")) { 
    // log to database 
} 
1

爲什麼在世界上你只想讓谷歌停止?其他搜索引擎也可能爲您的網站編制索引。 bing,雅虎,altavista和其他人呢?

您可以使用robots.txt禁止任何爬蟲爲您的網站建立索引。

讓你的根目錄的robots.txt,並把它下面:

User-agent: * 
Disallow:/

如果你要允許一些頁面壽爬蟲,您可以設置改爲元

<meta name="robots" content="noindex, nofollow" /> 

並不是所有的機器人都「很好」,並且尊重這些標籤。

+1

據我瞭解,原來的海報根本不想記錄頁面瀏覽量,不完全排除谷歌機器人。 – EdoDodo

+0

這隻會排除索引網站的所有搜索引擎 - 你不能保證他們不會訪問任何網站:)此外,這將從索引中刪除網站...也許這也不是他想要的。 –

0
<?php echo $_SERVER['REMOTE_ADDR'];?> 

會給你客戶的地址。然後你設置一個會根據你的邏輯檢查ip來存儲或放棄頁面的會話變量。

@ Jan的回答是更好的方法。儘管這會切斷所有機器人。

1

您是否想過所有其他機器人,蜘蛛和自動腳本在網上衝浪?他們也會填滿你的數據庫。並且發現所有這些用戶代理,IP和其他特徵是非常困難的。也許最好你限制歷史讓它說25個條目。

所以我的答案是:限制您的歷史記錄分錄db 將歷史記錄存儲在訪客客戶端的cookie中。