Джанго карта сайта с перебоями www - PullRequest
1 голос
/ 28 мая 2010

Автоматическая карта сайта для моего сайта Django колеблется между включением www в URL и пропуском его (я стремлюсь иметь его постоянно). Это приводит к тому, что Google не индексирует мои страницы должным образом, поэтому я пытаюсь определить причину этой проблемы.

Я установил PREPEND_WWW = True, и запись моего сайта в структуре сайтов должна включать www, например. он установлен на www.example.com, а не example.com. Я использую memcached, но страницы должны выходить из кэша через 48 часов, чтобы я не думал, что это вызовет проблему?

Вы можете увидеть действующую проблему в http://www.livingspaceltd.co.uk/sitemap.xml (обновите страницу несколько раз).

Мои настройки файлов сайта довольно прозаичны, поэтому я сомневаюсь, что это проблема, но в случае, если что-то очевидно, я пропускаю вот код:

***urls.py***

sitemaps = {
    'subpages': Subpages_Sitemap,
    'standalone_pages': Standalone_Sitemap,
    'categories': Categories_Sitemap,
}

urlpatterns = patterns('',
    (r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}),
    ...

***sitemaps.py***

# -*- coding: utf-8 -*- 
from django_ls.livingspace.models import Page, Category, Standalone_Page, Subpage
from django.contrib.sitemaps import Sitemap

class Subpages_Sitemap(Sitemap):
    changefreq = "monthly"
    priority = 0.4
    def items(self):
        return Subpage.objects.filter(restricted_to__isnull=True)

class Standalone_Sitemap(Sitemap):
    changefreq = "weekly"
    priority = 1
    def items(self):
        return Standalone_Page.objects.all()

class Categories_Sitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.7
    def items(self):
        return Category.objects.all()

Ответы [ 3 ]

0 голосов
/ 01 июня 2010

Ну, похоже, это была ошибка кеширования - я не совсем уверен, что было не так, так как я внес изменения более недели назад, так что это определенно не вело себя правильно, и мне пришлось попробовать пара разных методов, чтобы перезапустить его. Так что это требует более глубокого расследования, но оно работает сейчас.

0 голосов
/ 19 октября 2010

PREPEND_WWW = True в settings.py должен отображаться над настройками вашей переменной кэширования. Это исправило мою проблему, которая точно такая же, как и у вас. Я столкнулся с этой же проблемой, когда отправляю свою карту сайта в инструмент для веб-мастеров Google.

0 голосов
/ 28 мая 2010

Это может быть одна из самых странных проблем, которые я видел. Но дело в том, как Django создает URL-адреса в карте сайта очень просто. Он просто получает текущий объект Site из базы данных и добавляет значение поля «домен» к относительному расположению страницы:

current_site = Site.objects.get_current()
...
loc = "http://%s%s" % (current_site.domain, self.__get('location', item))

(источник)

Вы уверены, что не делаете ничего странного на уровне базы данных? Если у вас было несколько зеркальных баз данных, но они не были постоянными, это могло бы дать аналогичный эффект. Попробуйте настроить тестовое представление, которое просто отображает Site.objects.get_current(). Это, вероятно, также будет колебаться.

Если вы используете какое-либо стороннее приложение для кэширования (например, Johnny Cache), попробуйте отключить его.

Кроме того, убедитесь, что у вас нет двух объектов Site - один с, а другой без www (это не должно дать вам аналогичного эффекта, но с несколькими экземплярами сервера, настроенными для разных SITE_ID ... возможно?)

...