2015-02-01 3 views
0

Я развертываю проект Django с Gunicorn + Nginx. Я создаю файл sitemap.xml с sitemap framework. Я использую 127.0.0.1:8001 прокси так, когда я доступ к example.com/sitemap.xml результат похож на это:Файл Sitemap.xml в Django + Gunicorn + Nginx web

<url> 
<loc> 
http://127.0.0.1:8001/pages/item_1 
</loc> 
<changefreq>monthly</changefreq> 
<priority>0.5</priority> 
</url> 

Когда я добавить sitemap.xml в индекс Google в Google Webmaster Tools,, Google не разрешает sitemap.xml, поскольку домен в теге местоположения - 127.0.0.1:8001, а не мой домен.

Есть ли какие-либо решения этой проблемы?

Большое вам спасибо за помощь.

ответ

0

Я думаю, что если я понять ваш вопрос правильно, вы спрашиваете, почему Google дает вам об ошибке доступа 127.0.0.1:8001

127.0.0.1 обычно направляет на локальный

, и я довольно уверен, что Google не сможет получить доступ, что

то, что вам нужно это доменное имя, или, по крайней мере, ваш IP-адрес

сервер, как только у вас есть те, выполните следующие действия:

сделать файл с именем generate_sitemaps.py

from foo.models import Foo 
from django.contrib import site maps 

class FooSitemap(sitemaps.Sitemap): 
    changefreq = "hourly" 
    priority = 0.5 

    def items(self): 
     return Foo.objects.all() 

    def lastmod(self, obj): 
     return obj.updated 


# make sure this is at the bottom of your generate_sitemap.py file 
sitemaps = { 
    'foo': FooSitemap, 
} 

в файле urls.py от generate_sitemap сайта импорта карты

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

)

в Foo/models.py вы собираетесь нужен метод get_absolute_url для автоматического возврата для каждой записи

Class Foo(models.Model) 
    .... 
    updated = models.DateTimeField(auto_now=True) 

    def get_absolute_url(self): 
    return reverse('some_url', args=[self.id]) 

В настройках файл:

INSTALLED_APPS = (
    .... 
    'django.contrib.sitemaps', 
    ) 

, если вам нужна дополнительная информация о настройке сайтов и доменов в Джанго использовать чекает Django sites framework

+0

Спасибо, я прекрасно понимаю, почему Google не позволяет загружать их карту сайта с 127,0. 0,1. Мой вопрос: можно заменить следующим образом: 127.0.0.1:8000/pages/item1 ... с этим: mydomain.com/pages/item1 ... Я следую инструкциям Django Sitemap Framework, и верный URL-адрес начинается с домена 127.0.0.1, а не mydomain.com (потому что я использую прокси-сервер, я думаю) Я редактирую sitemap.xml и upl oad это как статический файл, но это только временное решение. –

+0

Я думаю, что вам нужно включить структуру сайтов, чтобы включить карты сайта, чтобы вернуть правильный домен в файле настроек: Site_ID = 1 затем перейти в Джанго администратора и войти в домен (в таблице django_sites). URL-адрес может быть трудно найти, возможно, что-то вроде: http://127.0.0.1:8001/admin/sites/site/1 также я обновил код выше, чтобы обеспечить 'django.contrib.sitemaps', находится в INSTALLED_APPS, хотя вы должны иметь это уже –

Смежные вопросы