4

我有一個Django網站,它使用本地化中間件與gettext和trans/blocktrans模板標籤結合使用,根據用戶代理字符串中的首選語言向訪問者顯示不同的頁面(這似乎是標準的做事方式Django的)。搜索引擎如何查看本地化的Django網站?

這對於支持的語言(當前只有西班牙語,英語和德語會更多)纔有效。如果我在瀏覽器中將首選語言設置爲其他語言,我會獲得該翻譯的頁面。但是,我不知道它是如何出現在搜索引擎上的。

當一個搜索引擎抓取一個網站時,它的代理字符串中是否有首選語言?德國的蜘蛛會得到德國的網站,西班牙的蜘蛛會得到西班牙網站,還是隻有當用戶沒有語言設置時纔會顯示默認的英文網站?這是否因搜索引擎而異?是否有一種「標準方式」來處理單個爬蟲可能會或可能不會遵守的事情?

回答

2

不要依賴搜索引擎在這方面可能做的事情。你想所有版本被抓取。要達到該目的,請執行以下操作:

  • 針對不同語言版本具有不同的URL。
  • 確保搜索引擎可以找到不同的版本。

總的來說,我認爲我做這件事是my homepage的方式接近理想的關於這兩個搜索引擎和普通用戶:

  • 當用戶到達,例如brazzy.de/index.php,該網站嘗試從cookie(如果存在)或瀏覽器設置(Accept-language標頭)確定語言,默認爲英文,並且不重定向
  • 每頁都有指向不同語言的鏈接該頁面的版本(IMO是用戶方便的最重要的因素,也確保搜索引擎可以輕鬆找到不同的版本)。
  • 這些鏈接導致例如brazzy.de/en/index.php,這在我的案例中被重寫爲brazzy.de/index.php?lang=en - 這可以確保搜索引擎針對不同語言版本看到不同的URL。
  • 訪問這樣的子目錄將語言cookie設置爲該語言
  • 沒有語言特定URL(即語言取決於客戶端數據的地方)的頁面使用例如<link rel="canonical" href="/en/">告訴搜索引擎哪個語言特定的URL可以被找到。
  • 使用XML sitemaps進一步確保搜索引擎可以找到所有頁面和所有不同的語言版本。
3

機器人通常在http頭中沒有接受語言設置。這意味着django將爲您的默認語言提供服務。 區域搜索引擎可以讓接受語言的機器人設置爲他們喜歡的任何東西,但是你不能依賴它。 每種語言最好有不同的頁面。如http://your.website.com/english/ ,然後在您的中間件中設置重定向到正確的語言頁面(如果存在特定的接受語言)。

0

使用hreflang meta tag確保您使用不同的網址不同語言。甚至更好的是,使用不同的域擴展(example.de,example.es)和Django sites框架。