Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 8, 2012 10:09:27

MantisABC
Зарегистрирован: 2012-04-04
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

robots.txt и Django

проблема: Django не отдает robots.txt
причем “похожая” html-ка идентификатора сайта для яндекса отдается.


urls.py:
===========
# -*- coding: utf-8 -*-
from django.conf import settings
from django.conf.urls.defaults import *
from django import template
……

from mysite.views import yandex_webmaster, robots1

…..
urlpatterns = patterns('',
(r'^$', my_frontpage),
(r'^yandex_……..html$', yandex_webmaster),
(r'^robots.txt$', robots1), # (1-3)
………..
===========================

views.py:
=================
………
def yandex_webmaster(request):
return render_to_response('yandex_………html')

def robots1(request):
return render_to_response('robots.txt', mimetype=“text/plain”)

…..
======================

robots.txt и yandex_… html лежат в templates и куча других html из templates удачно подхватываются

на хостинге стоит CentOS 5 и последний Django ( 1.3 или 1.4 )

Офлайн

#2 Апрель 8, 2012 14:42:37

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

robots.txt и Django

MantisABCкакую ошибку Джанга пишет? ибо на вид все выглядит нормально.
Может и не принципиально, но использовать лучше HttpResponse(тут_содержимое_robots.txt, mimetype='text/plain')



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Апрель 8, 2012 17:05:54

MantisABC
Зарегистрирован: 2012-04-04
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

robots.txt и Django

при включенном Debug = True выдает вот что:

====================================================
Page not found (404)Request Method: GET
Request URL: http://404.shtml


Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^$
^yandex_……..html$
^robots.txt$
…………………………….
^media/(?P<path>.*)$
^$
^jquery/index/$
^mootools/index/$
^prototype/index/$
^admin/
^media/(.*)$

The current URL, 404.shtml, didn't match any of these.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

==========================================

а HttpResponse попробую, спасибо

Офлайн

#4 Апрель 8, 2012 17:38:21

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

robots.txt и Django

возможно потому что джанга хочет вставить инфу в шаблон

Офлайн

#5 Апрель 8, 2012 22:22:17

MantisABC
Зарегистрирован: 2012-04-04
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

robots.txt и Django

я не понял насчет желания джанги вставить инфу в шаблон. Если можно, пожалуйста, подробнее.

но тут явно или какое-то свойство или глюк.
я вот тут перепробовал кучу вариантов, и пришел к такому:
hobots.txt - проходит на “ура!” , а вот точно такой же robots.txt - ни в какую.
так что тут где-то собака или разработчкики Джанги порылись.
( c HttpResponse кстати, та же история - robots.txt - не идёть )


urls.py:
===========================

urlpatterns = patterns('',
(r'^$', my_frontpage),
(r'^yandex_………html$', yandex_webmaster),
(r'^robots.txt$', robots1),
(r'^hobots.txt$', hobots1),
……………
============================

views.py:
===============
………
def robots1(request):
return render_to_response('robots_', mimetype=“text/plain”)

def hobots1(request):
return render_to_response('hobots_', mimetype=“text/plain”)

………….
===============

имя “родного” файла уже не robots.txt, но “отдается” то robots.txt и hobots.txt
все один в один, даже содержимое файла, но “hobots.txt” проходит, а “robots.txt” - нет.

Отредактировано MantisABC (Апрель 8, 2012 22:25:27)

Офлайн

#6 Апрель 8, 2012 23:41:00

Chern
От: Киев
Зарегистрирован: 2010-09-15
Сообщения: 71
Репутация: +  3  -
Профиль   Отправить e-mail  

robots.txt и Django

MantisABC
(r'^robots.txt$', robots1),

Меня смущает регулярка ulr'a. Должно быть так:
(r'^robots\.txt$', robots1),



Офлайн

#7 Апрель 9, 2012 01:28:33

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

robots.txt и Django

MantisABC
оборачивайте код в теги (code)…(/code) в квадратных скобках

1) Не понимаю, если в settings DEBUG=True, то почему упоминается 404.shtml ?
Проверить выдачу нужно так: http://site/robots.txt

2)Может быть фантастика,но как вариант: Уж не прописано в веб-сервере где нибудь выдачу robots.txt, т.е. Приходит запрос , его обрабатывает веб-сервер, не находя у себя в директориях файл генерирует ответ 404 в виде 404.shtml который переходит Джанге, которая не находит в url.py соответствующий обработчик?

3) Попробуйте в коде функции представления явно прописать текст из robots.txt



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Апрель 9, 2012 01:30:12)

Офлайн

#8 Апрель 10, 2012 10:44:32

MantisABC
Зарегистрирован: 2012-04-04
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

robots.txt и Django

Chern
MantisABC
(r'^robots.txt$', robots1),

Меня смущает регулярка ulr'a. Должно быть так:
(r'^robots\.txt$', robots1),


сделал так, проблемы все те же
(r'^robots\.txt$', robots1), - не хочет
(r'^hobots\.txt$', hobots1), - работает


написал хостеру - они сделали так, что файл robots.txt теперь у меня напрямую отдается из каталога моего сайта “templates” ( но без Django ) :-) ну пусть так, главное - работает !

все-таки дело было в “их” настройках.

( кстати, мне robots.txt понадобился, т.к. яндекс-бот слишком резво обошел мой сайт и не проиндексировал почти ничего ( “нет страницы”) и надо, видать, ставить Crawl-delay, неизвестно какую, и как определить не знаю, буду - методом антинаучного тыка )

Отредактировано MantisABC (Апрель 10, 2012 10:49:09)

Офлайн

#9 Авг. 23, 2012 17:04:30

delfenes
Зарегистрирован: 2012-08-23
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

robots.txt и Django

А почему не использовать просто direct_to_template?

url(r'^yandex_….txt$', direct_to_template,
{'template': ‘yandex_…….txt’}),

Проверка от яндекса проходит.
По каким-то соображениям, так делать нельзя???

Офлайн

#10 Авг. 23, 2012 20:09:22

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

robots.txt и Django

А почему не использовать просто direct_to_template?
Во первых он не для этого предназначен. Он необходим для редеринга шаблона с контекстом.
https://docs.djangoproject.com/en/1.4/ref/generic-views/#django-views-generic-simple-direct-to-template
Во вторых direct_to_template уже deprecated.
Если же всё же необходимо отдать robots.txt джангой, сделать можно так:
from django.http import HttpResponse
urlpatterns = patterns('',
    ...
    (r'^robots\.txt$', lambda r: HttpResponse("User-agent: *\nDisallow: /", mimetype="text/plain"))
)
или так:
(r'^robots.txt$', 'django.views.static.serve', {'path':"/txt/robots.txt",'document_root': settings.MEDIA_ROOT,'show_indexes': False }),
Или же воспользоваться приложением: http://pypi.python.org/pypi/django-robots
В продакшн robots.txt должен отдавать web сервер, например для apache:
LoadModule alias_module modules/mod_alias.so
alias /robots.txt /full/path/to/robots.txt



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version