2010-07-20 68 views
0

我將我的站點地圖存儲在我的Web文件夾中。我希望網絡抓取工具(Googlebot等)能夠訪問該文件,但我不一定希望所有人都可以訪問它。關於站點地圖的問題

例如,該位點(stackoverflow.com),具有站點索引 - 如通過其robots.txt文件(https://stackoverflow.com/robots.txt)指定。

但是,當你鍵入https://stackoverflow.com/sitemap.xml,您被定向到的404頁。

我該如何在我的網站上實現同樣的事情?

我運行LAMP網站,也是我使用站點地圖索引文件(所以我有多個站點地圖的網站)。如上所述,我想使用相同的機制通過瀏覽器使它們不可用。

回答

0

首先,決定哪些網絡你想得到你的實際網站地圖。

其次,配置Web服務器授予來自這些網絡爲您的sitemap文件的請求,並配置你的Web服務器重定向所有其他請求你的404錯誤頁面。

對於nginx,您希望將類似allow 10.10.10.0/24;的東西粘貼到站點地圖文件的location塊中。

對於apache,您正在尋找mod_authz_hostAllow指令,該指令用於站點地圖文件的<Files>指令。

+0

這絕對是我想要去的方式。用戶代理很容易僞造,所以這有一些吸引力。我知道它絕不是'神奇的銀色子彈',但我認爲它(至少在邊緣上)比包含用戶代理字符串的服務器端邏輯更強大。如果請求來自google.com,請提供一個允許訪問web文件夾中的sitemap-index.xml和* .gz文件的示例嗎? – morpheous 2010-07-20 09:54:53

+0

@Morpheous,訣竅在於找到網絡 - 谷歌從googlebot.com爬取,誰知道他們是否足夠堅持單個網絡塊,或者他們是否使用了數十個網絡塊。我建議你仔細觀察你的日誌,找出你想要允許的以及你想否認的內容。 – sarnold 2010-07-20 10:12:30

0

可以檢查用戶代理頭的客戶端發送的,只有在站點地圖傳遞給已知的搜索漫遊。但是,這並不安全,因爲用戶代理標頭很容易被欺騙。

0

堆棧溢出決定誰得到訪問的站點地圖時,想必會檢查兩件事情:

  • USER_AGENT
  • 原始IP地址

都將可能對數據庫進行匹配已知的合法機器人。

USER_AGENT字符串是很容易的在服務器端語言來檢查;假冒也很容易。更多信息: