2013-07-30 40 views
0

我有一個Ajax豐富的網站,其中有廣泛的_escaped_fragment_部分爲Ajax索引。雖然我的所有_escaped_fragment_網址都會301重定向到一個特殊的模塊,然後輸出爬蟲需要的HTML快照(即mysite.com/#!/content重定向到mysite.com/?_escaped_fragment_=/content,然後301s到mysite.com/raw/content),但我有些害怕用戶在這些「原始」URL本身上絆腳石並讓它們出現在搜索引擎中。如何僅允許抓取工具訪問網站的某個部分?

在PHP中,我如何確保只有機器人可以訪問這部分網站? (很像StackOverflow不允許其站點地圖給普通用戶,只允許機器人訪問它)

回答

2

你不能,至少不可靠。

robots.txt請求 spiders不在網站的某些部分,但是對於普通用戶代理沒有等價物。

最接近你可能會試圖保留一個可接受的IP地址或用戶代理的白名單,並基於該服務器提供不同的內容......但這有誤報的風險。

就個人而言,我會停下來的老-IE餐飲,報廢#!的URI和escaped_fragment黑客,切換到使用pushState and friends,並讓服務器建立任何給定頁面的初始視圖。

+0

恐怕項目的要求是舊的IE兼容性。是否有一個非機器人用戶代理的列表或通配符,爲了完成您提出的解決方案,我應該禁止在PHP端?我不會過於嚴格 - 當然有人可以欺騙UA,但我想盡我所能保留搜索引擎中的「原始」網址。 – Swader

+0

這看起來很有希望,我會在接下來的日子裏看看它:http://phpmaster.com/server-side-device-detection-with-browscap/ – Swader

相關問題