2011-04-11 20 views
0

我正在尋找一種乾淨的方式讓搜索引擎蜘蛛繞過@login_required,查看通常需要登錄用戶的頁面。我可以編寫能夠自動將搜索引擎記錄到一個虛擬帳戶的中間件,但這並不完全是我稱之爲乾淨的。任何建議更好的解決方案?謝謝。在Django中,爲搜索引擎蜘蛛禁用@login_required

+0

你爲什麼要做到這一點這將有助於澄清。例如,如果您要提供您希望在Google學術搜尋中搜索到的全文內容,但不提供給一般用戶,我相信您可以在不被禁止的情況下執行此操作。 – 2011-09-13 21:19:04

回答

2

不要這樣做。這是'隱藏',可以讓你從谷歌的索引中被禁止。

僞裝是指向用戶和搜索引擎呈現不同的內容或URL的做法。根據用戶代理提供不同的結果可能會導致您的網站被視爲欺騙性並從Google索引中移除。

相反,你需要實現谷歌的首次點擊免費解決方案。在這種設置中,Google搜索結果中的第一次點擊可以看到完整的內容,後續點擊被捕獲。這可以在推薦人或cookie的基礎上完成。你可以閱讀更多關於首次點擊免費在這裏:

2

爲什麼要這樣做?如果搜索引擎可以看到這些頁面,那麼任何人都可以在不登錄的情況下看到它們,因爲這些信息將顯示在搜索引擎的結果頁面上。在任何情況下,識別蜘蛛或bot的唯一方法是通過其用戶代理字符串,這是微不足道的。

+0

對我們來說是微不足道的,但對於我的用戶來說,這兩者都是非技術性的,也通常是機構性的(因此在許多情況下甚至不願違反規則)。 – rfrankel 2011-04-13 19:35:16

0

我不明白。在「@login_required」中你有一個重要的詞:「必需」。如果它是「必需的」,這是一個很好的理由。這意味着,爲了查看網頁,您的憑據是強制性的。因爲內容是私密的,祕密的等等。

如果你想讓你的網頁通過搜索引擎可用,你必須讓它們公開,因此,登錄是而不是所需的。所以,你的視圖不應該被@login_required裝飾器保護。

也許你的問題超出了你的頁面的可用性。也許你的內容是實際上是公開的,你的意見不應該受到這個裝飾者的保護。也許唯一需要的是爲每個用戶加載公共部分(記錄或匿名),並最終在用戶被識別時加載私有位。

否則,給蜘蛛留下後門絕對是一個壞主意,因爲你的私人內容不再是私人的。

相關問題