Google App Engine: динамически генерируемый файл Sitemap с Python - PullRequest
2 голосов
/ 29 марта 2011

У меня есть веб-сайт, и я хочу создать динамическую карту сайта для него.Я использую Google App Engine с Python и Django.

Я разработал другой веб-сайт с использованием PHP, и файл sitemap.xml был доступен из-за этого правила перезаписи, которое я написал для .htaccess сервера Apache.

RewriteRule (.*)\.xml(.*) $1.php$2 [nocase]

.xml-файл был сгенерирован следующим образом:

$sql_select ="SELECT titulo, title, data_insercao FROM livros l ORDER BY titulo ASC";<br> $result = mysql_query($sql_select) or die(mysql_error());<br> while($row = mysql_fetch_array($result)) {<br> $titulo = $row['titulo'];<br> $title = $row['title'];<br> $data = $row['data_insercao'];<br> $sql_comentario ="SELECT data FROM comentarios WHERE livros_title = '" . $title . "' order by data desc LIMIT 0 , 1";<br> $result_comentario = mysql_query($sql_comentario) or die(mysql_error());<br> $row_comentario = mysql_fetch_array($result_comentario);<br> if($row_comentario){<br> $data = $row_comentario['data'];<br> }<br> $pieces = explode(" ", $data);<br> $data = $pieces[0];<br> $url_product = 'http://www.sinopsedolivro.net/livro/' . $title . '.html';<br> echo<br> ' <url><br> <loc>'.$url_product.'</loc><br> <lastmod>'.$data.'</lastmod><br> <changefreq>weekly</changefreq><br> <priority>0.8</priority><br> </url><br> ';<br> } Есть ли какая-либо опция для моего случая (GAE + Python), поэтому при одном доступе к www.mydomain.com/sitemap.xml, он получит с сервера файл .xml с динамическим содержимым, сгенерированным мной с использованием python?

Ответы [ 2 ]

6 голосов
/ 30 марта 2011

Это отличная статья Ника Джонсона о файлах сайта Файлы сайта

В статье описывается использование метода пост-развертывания для создания карты сайта, альтернативой является создание карты сайта время от времени.;скажем, раз в день, используя cron, например:

`- description: daily sitemap refresh
  url: /cron_generate_sitemap
  schedule: every day 02:00
  timezone: Pacific/Auckland`

Если вы сохраните карту сайта в хранилище данных, то доступ будет очень быстрым, что повлияет на ваш рейтинг SEO.

Я предлагаю вам сохранить карту сайта вмодель, подобная той, что предоставлена ​​Ником Джонсоном, например

`class StaticContent(db.Model):
    """Container for statically served content.  
    The serving path for content is provided in the key name.
    """
    body = db.BlobProperty()
    content_type = db.StringProperty(required=True)
    last_modified = db.DateTimeProperty(required=True, auto_now=True)
    indexed = db.BooleanProperty(required=True, default=True)
`
3 голосов
/ 29 марта 2011

Конечно, вы можете предоставить любой ответ на любой URL вашего приложения. Просто подключите ваш контроллер к /sitemap.xml и напишите код, который выводит туда ваш xml. Не забудьте установить MIME-тип ответа на правильное значение.

Если вы используете django, вы можете прочитать http://docs.djangoproject.com/en/dev/topics/http/urls/

...