Sitemap changefreq: Sitemap.xml или карта сайта — руководство для новичков

Содержание

Правильный файл sitemap.xml или как создать карту сайта своими руками

Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!

04.06.2013

Здравствуйте уважаемые читатели блога Site on! Сегодня я хочу продолжить тему «создания своими руками» и если в прошлый раз мы говорили о создании ЧПУ (SEF) ссылок, то сегодня речь пойдёт о составлении собственной XML карты сайта.

Что такое карта сайта?

Карта сайта – это древовидный (упорядоченный) список всех разделов и/или страниц сайта, который состоит из ссылок на эти страницы. Карты сайта бывают двух видов: для посетителей сайта (HTML версия) и для поисковых роботов (XML версия).

Зачем нужна карта сайта?

HTML карта сайта служит навигацией для ваших посетителей, благодаря ей они должны быстро сориентироваться в структуре вашего сайта и перейти в нужный им раздел.

XML карта сайта

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

Ещё одно различие обычной (HTML) карты сайта от XML версии помимо всего прочего заключается в том, что в XML нам не нужно строить упорядоченный, древовидный список (чтобы было красиво и понятно), мы можем указывать URL вразброс, так как важен сам факт их наличия, а не наглядность или последовательность.

Я считаю, что, если наличие HTML версии нужно далеко не всегда, то XML я использую даже для трёхстраничных сайтов, как минимум ради «галочки» в кабинете поисковых систем и мизерного повышения траста к своим сайтам. Делать её всего пару минут, а лишней она точно не будет.

Положительные стороны наличия XML карты сайта:

  • Более быстрая индексация новых страниц.
  • Гарантия, что робот найдёт нужные страницы.
  • Возможность распределения приоритетов при индексировании.
  • Возможность указания частоты обновления информации на каждой странице.
  • Возможность указания даты последнего обновления страницы.
  • Капля в сосуд доверия к вашему сайту.

Внимание!

Для файлов Sitemap должна использоваться кодировка UTF-8.

Размер XML карты сайта не должен превышать 10 MB и не должен содержать больше 50000 URL. Если ваша карта превышает данные показатели, вы можете разбить её на несколько файлов и создать файл индекса sitemap. Подробнее об этом дальше.

В XML версии все ссылки должны быть абсолютными! То есть начинаться с
http://имя_домена/

Как создать sitemap.xml своими руками?

Вначале вы должны создать файл с произвольным именем и расширением .xml, либо .txt или RSS канал, но XML формат даёт больше возможностей и более привычен. Также рекомендуется размещать его именно в корне вашего сайта и называть

sitemap.xml, но опять-таки повторюсь, вы можете пренебречь этими рекомендациями и назвать файл как хотите, а также положить его куда угодно. Лично я за классику, поэтому для этого блога сделал всё как рекомендуется:

http://site-on.net/sitemap.xml

Далее открываем файл на редактирование, например, с помощью редактора кода Sublime Text 2 или phpDesigner 8 и первой строчкой, без пробелов и табуляций пишем xml-пролог, в котором мы указываем кодировку:

<?xml version="1.0" encoding="UTF-8"?>

После этого идёт обязательный корневой XML-тег:

<urlset>

Он должен содержать стандарт текущего протокола:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

Затем мы перечисляем всё ссылки и их параметры, для того чтобы начать описание новой ссылки мы должны написать обязательный тег

<url></url>

В дочерних тегах которого будет адрес ссылки и её параметры. Чтобы указать URL адрес страницы мы должны записать его абсолютный путь внутри тега

<loc></loc>

Который, как я уже писал, будет вложен в тег <url>. В конце последнего <url> не забываем закрыть корневой элемент </urlset>. Итого минимальная карта сайта будет иметь вид:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://site-on.net/</loc>
   </url>
</urlset>

Ещё раз повторю, что все теги, написанные здесь обязательны — без них ваша карта сайта не будет работать вообще, так как XML не допускает ошибок! А теперь давайте поговорим о необязательных тегах, благодаря которым мы можем указывать дополнительную информацию о каждом конкретном URL, они, как и обязательный тег loc пишутся внутри тега url.

Тег lastmod

Тег

<lastmod>

Предназначен для указания даты последнего изменения страницы, дата должна быть записана по стандарту W3C Datetime. Например:

<url>
    <loc>http://site-on.net/</loc>
    <lastmod>2013-06-04T08:34:46+01:00</lastmod>
</url>

Можно опустить точное время и записывать lastmod в более привычном виде:

<lastmod>2013-06-04</lastmod>

Тег changefreq

Тег

<changefreq>

Позволяет указать приблизительную частоту изменений страницы. Его допустимые значения:

  • always
  • hourly
  • daily
  • weekly
  • monthly
  • yearly
  • never

Например:

<url>
    <loc>http://site-on.net/</loc>
    <lastmod>2013-06-04</lastmod>
    <changefreq>weekly</changefreq>
</url>

В данном примере мы указали частоту обновления главной страницы: раз в неделю. Обращаю ваше внимание, что как и в случае с директивами robots.txt – тег changefreq носит лишь рекомендательный характер, поэтому если вы укажите частоту обновления страницы раз в год, то это ещё не значит что роботы будут посещать её всего лишь 1 раз в год, они могут наведываться хоть каждую неделю, если посчитают нужным.

Тег priority

И последним тегом, которым вы можете пользоваться при составлении своего файла sitemap.xml является:

<priority></priority>

Он показывает, какие страницы нужно проиндексировать как можно скорее, а какие можно и потом, то есть данный тег расставляет приоритет важности (очередь на сканирование). Значение задаётся от 0.0 до 1.0, значение для всех URL по умолчанию равно 0.5.

Внимание!

Priority – это относительная величина, поэтому нет смысла писать для всех страниц (с целью накрутки) приоритет – 1.0, это действие бессмысленно.

Priority – не влияет на позиции страниц в поисковой выдаче! Его значение влияет только на очередь индексирования между страницами вашего сайта.

Пример:

<url>
    <loc>http://site-on.net/create</loc>
    <priority>1.0</priority>
</url>
<url>
    <loc>http://site-on.net/create/html</loc>
    <priority>0.8</priority>
</url>

В каждом URL вашей карты сайта вы можете использовать разные сочетания необязательных тегов (атрибутов):

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
<url>
    <loc>http://site-on.net/</loc>
    <lastmod>2013-06-04</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
</url>
<url>
    <loc>http://site-on.net/about</loc>
    <lastmod>2013-06-04T08:34:48+01:00</lastmod>
    <priority>1.0</priority>
</url>
<url>
    <loc>http://site-on.net/create</loc>
    <priority>1.0</priority>
</url> 
</urlset>

Маскирование символов

По стандарту, в sitemap.xml все нижеприведённые символы должны быть замаскированы с помощью соответствующих им значений в таблице:

Вам необязательно маскировать символы вручную, вы можете воспользоваться этим сервисом: www.accessify.com

Создание файла индекса Sitemap для использования нескольких sitemap.xml

По стандарту, если у вас несколько файлов sitemap.xml, то они должны быть перечислены в файле индекса – это, как бы парадоксально не звучало, карта ваших карт сайта. То есть в файле индекса содержится перечень всех ваших файлов sitemap, в нём вы также можете пользоваться необязательным атрибутом lastmod.

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

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>http://site-on.net/sitemap1.xml</loc>
      <lastmod>2013-06-04</lastmod>
   </sitemap>
   <sitemap>
      <loc>http://site-on.net/sitemap2.xml</loc>
   </sitemap>
</sitemapindex>

Вся вышеприведённая информация взята с официального источника: www.sitemaps.org

Как создать правильную карту сайта для Joomla

Если ваш сайт имеет пару десятков страниц и не собирается увеличивать их количество, то вы, конечно же, можете создать карту сайта вручную. Между прочим, я считаю такой способ более предпочтительным по ряду причин:

  • Вам не нужно устанавливать дополнительные компоненты и плагины;
  • Они в свою очередь могут иметь изъяны безопасности;
  • Карта сайта будет быстрее загружаться, так как не будет отрисовываться на лету.

Однако если количество страниц вашего сайта давно перевалило за 20 и постоянно растёт, то составление карты сайта своими руками теряет свою целесообразность на фоне всех неудобств и затрат времени. Поэтому ребята из

Guillermo Vargas решили создать замечательный компонент для Joomla под названием XMAP, который помимо самой Джумлы имеет поддержку большинства популярных компонентов (VirtueMart, Zoo, K2 и др.).

Благодаря этому компоненту вы всего за пару минут создадите правильную карту (HTML и XML) для сайта любого объёма!

Компонент для создания карты сайта на Joomla + VirtueMart – XMAP

Актуальная версия Joomla на момент написания статьи: 2.5.11, актуальная версия XMAP: 2.3.3. Итак, скачиваем бесплатный компонент XMAP с официального сайта разработчиков, этот компонент доступен для любой версии Joomla и VirtueMart, не забудьте выбрать именно вашу версию:

Далее устанавливаем его стандартным способом с помощью «Менеджера расширений», затем заходим в административную панель Джумла: Компоненты/Xmap и сразу зайдём во вкладку «Расширения»

, чтобы включить нужные нам плагины:

Обычно это Content, WebLinks и VirtueMart для интернет-магазинов. После чего возвращаемся на предыдущую страницу и нажимаем красивую жёлтую кнопочку «Создать» вверху справа:

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

В остальном вам должно быть всё понятно, разве что я рекомендую отключить опцию «Украшать XML», так как она вовсе не к чему:

После всех настроек не забываем поставить состояние «опубликовано» и нажать «сохранить и закрыть»:

Теперь нам остаётся лишь нажать на ссылку «XML Sitemap» и скопировать URL карты сайта в robots.txt и кабинеты Яндекса и Гугл:

Примечание:

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

Если что-то осталось непонятным или вы с чем-то не согласны – оставляйте свои комментарии, я обязательно отвечу.

Всем спасибо за внимание, вы можете подписаться на выход новых статей, используя форму ниже или с помощью кнопок в самом вверху (или справа) страницы. Всем удачного дня и до встречи в новых статьях!

Пожалуйста, оцените эту статью
Средняя оценка: 4.79 из 5 (проголосовало: 137)

Статья оказалась вам полезной? Подпишитесь, чтобы не пропустить новые!

Вы можете помочь развитию проекта, сделав всего 1 клик:
Спасибо!

Несколько карт сайта в одном файле sitemap



У меня есть сайт с sitemap, около 150 записей в URLs, которые статичны на сайте. lastmod элемент установлен на 2012 год. Этот sitemap был обновлен примерно год назад.

Последние пару строк из этого файла SM являются:

  <url><loc>http://example.com/sitemap2.xml</loc><changefreq>daily</changefreq></url>
  <url><loc>http://example.com/siteMap3.xml</loc><changefreq>daily</changefreq></url>
</urlset>

Sitemap 2 содержит ту же логику, но со ссылками, нацеленными на конкретные продукты , и sitemap 3 делает то же самое, но нацеленное на категории . Эти два генерируются ежедневно.

Основной sitemap.xml зарегистрирован. Внешний советник SEO провел тест и сообщил, что sitemap не обновляется и не содержит ссылок на продукты и категории.

Как я могу проверить, верно ли то, что он сказал? Если он прав, что я мог здесь сделать не так?

seo sitemap
Поделиться Источник Computer     11 октября 2016 в 15:51

1 ответ


  • Преимущество нескольких файлов sitemap

    Я думаю о создании нескольких файлов sitemap на основе верхних категорий для моего сайта magento, мне просто интересно, каковы преимущества наличия нескольких карт сайта для веб-сайта. Я знаю одно ограничение, что google не допускает более 50 000 url в одном файле sitemap, а размер также должен…

  • Перечисление как карт сайтов, так и индексных файлов sitemap в robots.txt?

    Мой сайт состоит из 3 основных разделов: обзоры, форум и блог. У меня есть плагины для форума и блога, которые автоматически генерируют для них карты сайтов. Плагин forum генерирует файл sitemap INDEX, указывающий на несколько индексов, а плагин blog генерирует обычный файл sitemap, содержащий все…



2

Наличие нескольких карт сайта-это нормально, но вы должны связать их из индексного файла sitemap .

Для вашего случая вы могли бы использовать что-то вроде этого:

<?xml version="1.0" encoding="UTF-8"?>

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

   <sitemap>
      <loc>http://example.com/sitemap1.xml</loc>
      <lastmod>2012</lastmod>
   </sitemap>

   <sitemap>
      <loc>http://example.com/sitemap2.xml</loc>
      <lastmod>2016-10-11</lastmod>
   </sitemap>

   <sitemap>
      <loc>http://example.com/sitemap3.xml</loc>
      <lastmod>2016-10-11</lastmod>
   </sitemap>

</sitemapindex>

Вместо changefreq вы должны использовать lastmod , который принимает дату последнего изменения sitemap (а не sitemap записей).

Этот индексный файл sitemap затем может быть связан с вашим файлом robots.txt (and/or, который будет отправлен в поисковые системы).

Поделиться unor     11 октября 2016 в 21:36


Похожие вопросы:


Не удается сгенерировать sitemap для сайта?

Я пытался сгенерировать sitemap для своего сайта,я использовал несколько сторонних инструментов, но ни один из них не был успешным, они либо дают ошибку, либо не генерируют правильный sitemap и…


Генератор карт сайта в laravel 5 с RoumenDianoff sitemap

Я внедряю laravel RoumenDianoff Sitemap в свое приложение https://github.com/RoumenDamianoff/laravel-sitemap/wiki/Dynamic-sitemap И я действительно запутался в этой части кода Route::get(‘sitemap’,…


Несколько Sitemap: записи в robots.txt?

Я искал вокруг с помощью Google, но не могу найти ответа на этот вопрос. Файл robots.txt может содержать следующую строку: Sitemap: http://www.mysite.com/sitemapindex.xml но можно ли указать…


Преимущество нескольких файлов sitemap

Я думаю о создании нескольких файлов sitemap на основе верхних категорий для моего сайта magento, мне просто интересно, каковы преимущества наличия нескольких карт сайта для веб-сайта. Я знаю одно…


Перечисление как карт сайтов, так и индексных файлов sitemap в robots.txt?

Мой сайт состоит из 3 основных разделов: обзоры, форум и блог. У меня есть плагины для форума и блога, которые автоматически генерируют для них карты сайтов. Плагин forum генерирует файл sitemap…


Как создать визуальный sitemap существующего сайта?

У меня есть сайт со многими страницами, многие из которых зависят от пользователя, чтобы войти в систему перед доступом. Я должен создать карту сайта сайта для некоторого отслеживания и записи…


можно ли рекомендовать несколько карт сайтов для веб-портала

У меня есть портал, основанный на крикете, проверьте здесь результаты крикета , этот сайт имеет почти миллионы страниц. Но желательно ли иметь несколько карт сайта на сайте или нет? если да, то…


Вопрос относительно карт сайта

Я храню свои карты сайтов в своей веб-папке. Я хочу, чтобы веб-сканеры (Googlebot и т. д.) могли получить доступ к файлу, но я не обязательно хочу, чтобы все и вся имели к нему доступ. Например,…


Typo3 — dd_googlesitemap несколько sitemap

Я использую следующие два расширения: dd_googlesitemap и dd_googlesitemap_dmf У меня есть две карты сайта: Страницы по умолчанию: index.php?Eid=dd_googlesitemap Мое расширение:…


Автоматическое создание sitemap в wordpress

Есть ли какой-либо код для автоматической генерации карт сайта в пользовательской теме wordpress? У меня есть сайт блога, построенный в wordpress и вручную созданный sitemap для каждой страницы. Я…

Глава 11, раздел 6: DjangoBook по-русски

Среда генерации карты сайта

Карта сайта представляет собой XML файл, который располагается на вашем веб сервере и сообщает поисковым движкам как часто изменяются ваши страницы и как «важны» определённые страницы по отношению к другим страницам вашего сайта. Эта информация помогает поисковым движкам индексировать ваш сайт.

Например, ниже представлена карта сайта Django (http://www.djangoproject.com/sitemap.xml):

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.djangoproject.com/documentation/</loc>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>http://www.djangoproject.com/documentation/0_90/</loc>
    <changefreq>never</changefreq>
    <priority>0.1</priority>
  </url>
  ...
</urlset>

Для получения более подробной информации по картам сайтов обратитесь к http://www.sitemaps.org/.

Среда Django для генерации карты сайта автоматизирует создание такого XML файла, позволяя вам выражать эту информацию в коде на языке Python. Для того, чтобы создать карту сайта вам лишь надо написать класс Sitemap и указать на него в файле привязок URL.

Для того, чтобы установить карту сайта в ваше приложение, следуйте нижеприведённой инструкции:

  1. Добавьте django.contrib.sitemaps в параметр конфигурации INSTALLED_APPS.

  2. Удостоверьтесь, что django.template.loaders.app_directories.load_template_source указан в параметре конфигурации TEMPLATE_LOADERS. По умолчанию он должен там быть, только если вы его сами оттуда не убрали.

  3. Удостоверьтесь, что вы установили sites framework FIXME (см.sitemap.xml$’, ‘django.contrib.sitemaps.views.sitemap’, {‘sitemaps’: sitemaps})

    Эта строка указывает Django, что необходимо построить карту сайта, когда клиент запросит /sitemap.xml.

    Имя для файла содержащего карту сайта не имеет значения, но вот расположение этого файла имеет. Поисковые движки всегда индексируют ссылки в вашей карте относительно текущего уровня URL и ниже. Например, если sitemap.xml находится в корневом каталоге сайта, он может ссылаться на любой URL вашего сайта. Однако, если карта сайта находится по URL /content/sitemap.xml, он может ссылаться на URL, начинающийся с /content/.

    Представление для карты сайта принимает дополнительный обязательный аргумент: {‘sitemaps’: sitemaps}. Значение sitemaps должно быть словарём, который совпадает с сокращённой меткой (т.е. blog или news) для своего класса Sitemap (т.е. BlogSitemap или NewsSitemap). Значение может также совпадать с экземпляром класса Sitemap (т.е., с BlogSitemap(some_var)).

    Класс Sitemap — это обычный Python класс, который представляет «раздел» элементов вашей карты сайта. Например, один класс Sitemap может представлять все записи вашего блога, в то время как другой класс представляет все события вашего календаря.

    В простейшем случае все эти разделы объединяются в единый sitemap.xml. Также есть возможность использовать среду для генерации индекса карты сайта, который будет ссылаться на отдельные файлы карт, один файл на карту.

    Классы Sitemap должны подключать django.contrib.sitemaps.Sitemap и могут располагаться в любом месте вашего кода.

    Например, предположим, что у вас есть система ведения блогов, использующая модель Entry. И вы желаете, чтобы карта сайта включала все ссылки на каждую запись блога. Вот так может выглядеть ваш класс Sitemap:

    from django.contrib.sitemaps import Sitemap
    from mysite.blog.models import Entry
    
    class BlogSitemap(Sitemap):
        changefreq = "never"
        priority = 0.5
    
        def items(self):
            return Entry.objects.filter(is_draft=False)
    
        def lastmod(self, obj):
            return obj.pub_date
    

    Объявление Sitemap должна выглядеть подобно декларации класса Feed, таков дизайн Django.

    Подобно классам Feed, члены класса Sitemap могут быть как методами, так и атрибутами. Подробности были описаны в разделе «Более сложная трансляция».

    Класс Sitemap может определять следующие методы или атрибуты:

    • Обязательный метод items предоставляет список объектов. Среда не заботится о типах объектов. Имеет значение только то, что эти объекты передаются в методы location(), lastmod(), changefreq() и priority().

    • Необязательный метод location предоставляет абсолютный URL для текущего объекта. В данном случае «абсолютный URL» означает URL, который не включает протокол и домен. Вот несколько примеров:

      • Хороший: /foo/var/.

      • Плохой: example.com/foo/bar/.

      • Плохой: http://example.com/foo/bar/.

      Если location отсутствует, среда будет использовать метод get_absolute_url() для каждого объекта, возвращённого методом items().

    • Необязательный метод lastmod возвращает дату последнего изменения объекта в виде стандартного объекта datetime.

    • Необязательный метод changefreq возвращает информацию о том, как часто изменяется объект. Возможные значения, определённые спецификацией на карты сайтов, представлены ниже:

      • always

      • hourly

      • daily

      • weekly

      • monthly

      • yearly

      • never

    • Необязательный метод priority возвращает приоритет между 0.0 и 1.0. Стандартный приоритет для страницы 0.5. О том как работают приоритеты можно узнать в документации на http://sitemaps.org/.

    Среда генерации карты сайта поставляется с рядом удобных классов пригодных для решения общих задач. Они будут описаны дальше в этой главе.

    Класс django.contrib.sitemaps.FlatPageSitemap просматривает все плоские, страницы определённые для текущего сайта и создаёт запись в карте сайта. Эти записи включают в себя только атрибут location.

    Подробности о плоских страницах приведены в главе «Средства от других разработчиков».

    Класс GenericSitemap работает с любым базовым представлением (см. главу «Базовые представления»), которое у вас есть.

    Для использования этого класса, создайте его экземпляр, передав ему такой же info_dict, какой вы передаёте базовым представлениям. Единственное требование заключается в том, что словарь должен иметь запись queryset.sitemap-(?P<section>.+).xml$’, ‘django.contrib.sitemaps.views.sitemap’, {‘sitemaps’: sitemaps})

    Это автоматически создаст файл sitemap.xml, который будет ссылаться на sitemap-flatpages.xml и sitemap-blog.xml. Классы Sitemap и словарь sitemaps не изменятся.

    Уведомление Google

    Вы можете организовать уведомление Google об изменениях в карте сайта, чтобы они знали, что надо произвести повторную индексацию вашего сайта. Среда предоставляет функцию для этого — django.contrib.sitemaps.ping_google().

    Замечание

    Во время работы над этой книгой только Google откликался на уведомления. Тем не менее, есть вероятность, что Yahoo и/или MSD скоро добавят поддержку уведомлений.

    В этом случае, мы наверное изменим имя функции ping_google() на что-нибудь подобное ping_search_engines(). Рекомендуем периодически проверять документацию на http://www.djangoproject.com/documentation/0.96/sitemaps/.

    Функция ping_google() принимает необязательный аргумент sitemap_url, который должен содержать абсолютный URL для карты сайта (т.е. /sitemap.xml). Если этот аргумент опущен, функция попытается найти карту сайта через файл привязок.

    Функция ping_google() вызывает исключение django.contrib.sitemaps.SitemapNotFound, если она не может определить URL для карты сайта.

    Ниже показан полезный способ вызова ping_google() из метода save() модели:

    from django.contrib.sitemaps import ping_google
    
    class Entry(models.Model):
        # ...
        def save(self):
            super(Entry, self).save()
            try:
                ping_google()
            except Exception:
                # Простое исключение, так как мы можем получить целый
                # набор исключений, относящихся к HTTP.
                pass
    

    Однако, более эффективным решением будет вызов ping_google() из скрипта cron или из другого периодического процесса. Функция выполняет HTTP запрос к серверам Google и вам может не понравится расход пропускной способности сети при каждом вызове save().

    The sitemap framework — Документация Django 1.9

    Django comes with a high-level sitemap-generating framework that makes creating sitemap XML files easy.

    Overview

    A sitemap is an XML file on your website that tells search-engine indexers how frequently your pages change and how “important” certain pages are in relation to other pages on your site. This information helps search engines index your site.

    The Django sitemap framework automates the creation of this XML file by letting you express this information in Python code.

    It works much like Django’s syndication framework. To create a sitemap, just write a Sitemap class and point to it in your URLconf.

    Installation

    To install the sitemap app, follow these steps:

    1. Add 'django.contrib.sitemaps' to your INSTALLED_APPS setting.
    2. Make sure your TEMPLATES setting contains a DjangoTemplates backend whose APP_DIRS options is set to True. It’s in there by default, so you’ll only need to change this if you’ve changed that setting.
    3. Make sure you’ve installed the sites framework.

    (Note: The sitemap application doesn’t install any database tables. The only reason it needs to go into INSTALLED_APPS is so that the Loader() template loader can find the default templates.)

    Initialization

    views.sitemap(request, sitemaps, section=None, template_name=’sitemap.xml’, content_type=’application/xml’)

    To activate sitemap generation on your Django site, add this line to your URLconf:

    from django.contrib.sitemaps.sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
        name='django.contrib.sitemaps.views.sitemap')
    

    This tells Django to build a sitemap when a client accesses /sitemap.xml.

    The name of the sitemap file is not important, but the location is. Search engines will only index links in your sitemap for the current URL level and below. For instance, if sitemap.xml lives in your root directory, it may reference any URL in your site. However, if your sitemap lives at /content/sitemap.xml, it may only reference URLs that begin with /content/.

    The sitemap view takes an extra, required argument: {'sitemaps': sitemaps}. sitemaps should be a dictionary that maps a short section label (e.g., blog or news) to its Sitemap class (e.g., BlogSitemap or NewsSitemap). It may also map to an instance of a Sitemap class (e.g., BlogSitemap(some_var)).

    Sitemap classes

    A Sitemap class is a simple Python class that represents a “section” of entries in your sitemap. For example, one Sitemap class could represent all the entries of your Weblog, while another could represent all of the events in your events calendar.

    In the simplest case, all these sections get lumped together into one sitemap.xml, but it’s also possible to use the framework to generate a sitemap index that references individual sitemap files, one per section. (See Creating a sitemap index below.)

    Sitemap classes must subclass django.contrib.sitemaps.Sitemap. They can live anywhere in your codebase.

    A simple example

    Let’s assume you have a blog system, with an Entry model, and you want your sitemap to include all the links to your individual blog entries. Here’s how your sitemap class might look:

    from django.contrib.sitemaps import Sitemap
    from blog.models import Entry
    
    class BlogSitemap(Sitemap):
        changefreq = "never"
        priority = 0.5
    
        def items(self):
            return Entry.objects.filter(is_draft=False)
    
        def lastmod(self, obj):
            return obj.pub_date
    

    Note:

    • changefreq and priority are class attributes corresponding to <changefreq> and <priority> elements, respectively. They can be made callable as functions, as lastmod was in the example.
    • items() is simply a method that returns a list of objects. The objects returned will get passed to any callable methods corresponding to a sitemap property (location, lastmod, changefreq, and priority).
    • lastmod should return a Python datetime object.
    • There is no location method in this example, but you can provide it in order to specify the URL for your object. By default, location() calls get_absolute_url() on each object and returns the result.

    Sitemap class reference

    class Sitemap

    A Sitemap class can define the following methods/attributes:

    items

    Required. A method that returns a list of objects. The framework doesn’t care what type of objects they are; all that matters is that these objects get passed to the location(), lastmod(), changefreq() and priority() methods.

    location

    Optional. Either a method or attribute.

    If it’s a method, it should return the absolute path for a given object as returned by items().

    If it’s an attribute, its value should be a string representing an absolute path to use for every object returned by items().

    In both cases, “absolute path” means a URL that doesn’t include the protocol or domain. Examples:

    • Good: '/foo/bar/'
    • Bad: 'example.com/foo/bar/'
    • Bad: 'https://example.com/foo/bar/'

    If location isn’t provided, the framework will call the get_absolute_url() method on each object as returned by items().

    To specify a protocol other than 'http', use protocol.

    lastmod

    Optional. Either a method or attribute.

    If it’s a method, it should take one argument – an object as returned by items() – and return that object’s last-modified date/time, as a Python datetime.datetime object.

    If it’s an attribute, its value should be a Python datetime.datetime object representing the last-modified date/time for every object returned by items().

    If all items in a sitemap have a lastmod, the sitemap generated by views.sitemap() will have a Last-Modified header equal to the latest lastmod. You can activate the ConditionalGetMiddleware to make Django respond appropriately to requests with an If-Modified-Since header which will prevent sending the sitemap if it hasn’t changed.

    changefreq

    Optional. Either a method or attribute.

    If it’s a method, it should take one argument – an object as returned by items() – and return that object’s change frequency, as a Python string.

    If it’s an attribute, its value should be a string representing the change frequency of every object returned by items().

    Possible values for changefreq, whether you use a method or attribute, are:

    • 'always'
    • 'hourly'
    • 'daily'
    • 'weekly'
    • 'monthly'
    • 'yearly'
    • 'never'
    priority

    Optional. Either a method or attribute.

    If it’s a method, it should take one argument – an object as returned by items() – and return that object’s priority, as either a string or float.

    If it’s an attribute, its value should be either a string or float representing the priority of every object returned by items().

    Example values for priority: 0.4, 1.0. The default priority of a page is 0.5. See the sitemaps.org documentation for more.

    protocol

    Optional.

    This attribute defines the protocol ('http' or 'https') of the URLs in the sitemap. If it isn’t set, the protocol with which the sitemap was requested is used. If the sitemap is built outside the context of a request, the default is 'http'.

    limit

    Optional.

    This attribute defines the maximum number of URLs included on each page of the sitemap. Its value should not exceed the default value of 50000, which is the upper limit allowed in the Sitemaps protocol.

    i18n

    Добавлено в Django 1.8.

    Optional.

    A boolean attribute that defines if the URLs of this sitemap should be generated using all of your LANGUAGES. The default is False.

    Shortcuts

    The sitemap framework provides a convenience class for a common case:

    class GenericSitemap

    The django.contrib.sitemaps.GenericSitemap class allows you to create a sitemap by passing it a dictionary which has to contain at least a queryset entry. This queryset will be used to generate the items of the sitemap. It may also have a date_field entry that specifies a date field for objects retrieved from the queryset. This will be used for the lastmod attribute in the generated sitemap.sitemap\.xml$’, sitemap, {‘sitemaps’: {‘blog’: GenericSitemap(info_dict, priority=0.6)}}, name=’django.contrib.sitemaps.views.sitemap’), ]

    Sitemap for static views

    Often you want the search engine crawlers to index views which are neither object detail pages nor flatpages. The solution is to explicitly list URL names for these views in items and call reverse() in the location method of the sitemap. For example:

    # sitemaps.py
    from django.contrib import sitemaps
    from django.core.urlresolvers import reverse
    
    class StaticViewSitemap(sitemaps.Sitemap):
        priority = 0.5
        changefreq = 'daily'
    
        def items(self):
            return ['main', 'about', 'license']
    
        def location(self, item):
            return reverse(item)
    
    # urls.py
    from django.conf.urls import url
    from django.contrib.sitemaps.views import sitemap
    
    from .sitemaps import StaticViewSitemap
    from . import views
    
    sitemaps = {
        'static': StaticViewSitemap,
    }
    
    urlpatterns = [
        url(r'^$', views.custom-sitemap-(?P<section>.+)\.xml$', views.sitemap, {
            'sitemaps': sitemaps,
            'template_name': 'custom_sitemap.html'
        }),
    ]
    

    These views return TemplateResponse instances which allow you to easily customize the response data before rendering. For more details, see the TemplateResponse documentation.

    Context variables

    When customizing the templates for the index() and sitemap() views, you can rely on the following context variables.

    Index

    The variable sitemaps is a list of absolute URLs to each of the sitemaps.

    Sitemap

    The variable urlset is a list of URLs that should appear in the sitemap. Each URL exposes attributes as defined in the Sitemap class:

    • changefreq
    • item
    • lastmod
    • location
    • priority

    The item attribute has been added for each URL to allow more flexible customization of the templates, such as Google news sitemaps. Assuming Sitemap’s items() would return a list of items with publication_data and a tags field something like this would generate a Google News compatible sitemap:

    <?xml version="1.0" encoding="UTF-8"?>
    <urlset
      xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:news="https://www.google.com/schemas/sitemap-news/0.9">
    {% spaceless %}
    {% for url in urlset %}
      <url>
        <loc>{{ url.location }}</loc>
        {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
        {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
        {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
        <news:news>
          {% if url.item.publication_date %}<news:publication_date>{{ url.item.publication_date|date:"Y-m-d" }}</news:publication_date>{% endif %}
          {% if url.item.tags %}<news:keywords>{{ url.item.tags }}</news:keywords>{% endif %}
        </news:news>
       </url>
    {% endfor %}
    {% endspaceless %}
    </urlset>
    

    Pinging Google

    You may want to “ping” Google when your sitemap changes, to let it know to reindex your site. The sitemaps framework provides a function to do just that: django.contrib.sitemaps.ping_google().

    ping_google()

    ping_google() takes an optional argument, sitemap_url, which should be the absolute path to your site’s sitemap (e.g., '/sitemap.xml'). If this argument isn’t provided, ping_google() will attempt to figure out your sitemap by performing a reverse looking in your URLconf.

    ping_google() raises the exception django.contrib.sitemaps.SitemapNotFound if it cannot determine your sitemap URL.

    One useful way to call ping_google() is from a model’s save() method:

    from django.contrib.sitemaps import ping_google
    
    class Entry(models.Model):
        # ...
        def save(self, force_insert=False, force_update=False):
            super(Entry, self).save(force_insert, force_update)
            try:
                ping_google()
            except Exception:
                # Bare 'except' because we could get a variety
                # of HTTP-related exceptions.
                pass
    

    A more efficient solution, however, would be to call ping_google() from a cron script, or some other scheduled task. The function makes an HTTP request to Google’s servers, so you may not want to introduce that network overhead each time you call save().

    Pinging Google via

    manage.py
    django-admin ping_google

    Once the sitemaps application is added to your project, you may also ping Google using the ping_google management command:

    python manage.py ping_google [/sitemap.xml]
    

    Hugo: карта сайта — dr.Brain

    Hugo поставляется со встроенным шаблоном карты сайта, соответствующим протоколу версии 0.9, если нет необходимости модифицировать sitemap.xml, никакой работы со стороны пользователя не требуется. Тем не менее, при необходимости переопределить шаблон карты сайта можно.

    Карта сайта (sitemap), является страницей (Page) и поэтому может использовать все переменные, доступные для страницы, а также переменные, специфичные только для карты сайта:

    1. .Sitemap.ChangeFreq — частота обновления страницы,
    2. .Sitemap.Priority — приоритет страницы,
    3. .Sitemap.Filename — наименование файла карты сайта.

    Если создан файл /layouts/sitemap.xml или layouts/_default/sitemap.xml, он будет использоваться вместо встроенного в ядро Hugo шаблона карты сайта.

    Для многоязычных сайтов создается индексный файл карты сайта, который можно заместить файлом layouts/sitemapindex.xml или layouts/_default/sitemapindex.xml.

    Вот пример шаблона карты сайта, соответствующий 0.9 версии протокола Sitemap:

    {{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:xhtml="http://www.w3.org/1999/xhtml">
      {{ range .Data.Pages }}
      <url>
        <loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
        <lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
        <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
        <priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
        <xhtml:link
                    rel="alternate"
                    hreflang="{{ .Lang }}"
                    href="{{ .Permalink }}"
                    />{{ end }}
        <xhtml:link
                    rel="alternate"
                    hreflang="{{ .Lang }}"
                    href="{{ .Permalink }}"
                    />{{ end }}
      </url>
      {{ end }}
    </urlset>
    

    А это пример шаблона индексного файла для многоязычного сайта:

    {{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
    <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    	{{ range . }}
    	<sitemap>
    	   	<loc>{{ .SitemapAbsURL }}</loc>
    		{{ if not .LastChange.IsZero }}
    	   	<lastmod>{{ .LastChange.Format "2006-01-02T15:04:05-07:00" | safeHTML }}</lastmod>
    		{{ end }}
    	</sitemap>
    	{{ end }}
    </sitemapindex>
    

    Для того, чтобы задать параметры конфигурации карты сайта (sitemap.xml), значения переменных карты сайта устанавливаются в файле конфигурации.

    Например, для config.toml, это будет выглядеть так:

    [sitemap]
      changefreq = "monthly"
      filename = "sitemap.xml"
      priority = 0.5
    

    Для config.yaml:`

    sitemap:
      changefreq: monthly
      filename: sitemap.xml
      priority: 0.5
    

    Для config.json:

    {
       "sitemap": {
          "changefreq": "monthly",
          "filename": "sitemap.xml",
          "priority": 0.5
       }
    }
    

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


    Спасибо за внимание.

    Карта сайта в формате XML (sitemap.xml). Как создать карту сайта

    Карта сайта в формате XML (sitemap.xml) — файл в формате XML, в котором перечислены все основные страницы сайта. Файл sitemap.xml необходим для указания поисковым системам всех главных страниц сайта, которые необходимо проиндексировать.

    Различают два вида:

    1. Статическая — создается самостоятельно либо в ручном режиме, либо при помощи дополнительных сервисов.
    2. Динамическая — внедряется в рамках CMS и позволяет автоматически обновлять карту сайта.

    Для чего нужна XML-карта сайта

    Правильно сформированная XML-карта позволяет:

    • формировать актуальный список страниц сайта;
    • облегчать поиск новых страниц и их индексацию;
    • указывать частоту и приоритетность индексации;
    • отслеживать дату изменений.

    Синтаксис формирования карты сайта в формате XML

    Карта сайта должна начинается строками:

    <?xml version=«1.0″ encoding=«UTF-8″?>

    <urlset xmlns=«http://www.sitemaps.org/schemas/sitemap/0.9″>

    Дальше идет перечисления страниц сайта по схеме:

    <url>

    <loc>https://site.com.ua</loc>

    <lastmod>2020-01-10T18:00:15+00:00</lastmod>

    <priority>1.00</priority>

    <changefreq>daily</changefreq>

    </url>

    Закачивается карта сайта тегом, который указывает о завершении списка страниц сайта

    </urlset>

    Где:

    Тэг

    Описание тега

    <url>

    Тг, указывающий на начало блока страницы и ее описания, является обязательным атрибутом карты сайта

    <loc>

    Тег, указывающий адрес страницы, является обязательным атрибутом карты сайта

    <lastmod>

    Тег, указывающий дату последнего изменения страницы, является желательным атрибутом карты сайта

    <priority>

    Тег, указывающий приоритет страницы, диапазон от 1.00 до 0.1, 1.00 — самый высокий приоритет, 0.1 — самый низкий приоритет.

    <changefreq>

    Тег, указывающий частоту обновления страницы, возможные значения:

    always — всегда

    hourly — ежечасно

    daily — ежедневно

    weekly — еженедельно

    monthly — ежемесячно

    yearly — раз в год

    never — никогда

    Все основные поисковые системы имеют функционал добавления адреса файла sitemap.xml, который необходимо указать поисковой системе. В поисковой системе Google файл карты сайта в формате XML добавляется в настройках в Google Webmaster Tools, а в поисковой системе Яндекс существует аналогичный инструмент для вебмастеров Яндекс. Вебмастер, другие поисковые системы имеют инструменты аналогичные высшее указанным.

    После формирования карты нужно добавить следующий код в файл robots.txt:

    User-Agent: *

    Sitemap: https://site.com.ua/sitemap.xml

    Общие правила составления XML-карты сайта

    1. Основной файл карты сайта должен иметь имя sitemap, разрешение xml, располагаться в корне сайта по адресу https://site.com.ua/sitemap.xml и быть доступным с интернета.

    2. При использовании сторонних модулей для формирования, карта сайта может генерироваться по другому адресу, в таком случае нужно настроить, 301 серверный редирект с https://site.com.ua/sitemap.xml на нужный URL.

    3. В начале документа sitemap.xml следует сначала размещать ссылки на страницы категорий, после них на страницы товаров.

    4. В sitemap.xml не должны включатся страницы, которые закрыты в robots.txt или на которых размещен мета тег <meta name=”robots” content=”noindex, follow” />

    5. Файл Sitemap не должен содержать более чем 50 000 URL, а его размер в несжатом виде не должен превышать 50 МБ. В случаях, когда размер файла Sitemap превышает допустимый, выделяют несколько вариантов решения:

      • разбить его на несколько частей, например, sitemap1.xml и sitemap2.xml

      • файл sitemap.xml может быть заархивирован и иметь формат sitemap.xml.gz с целью уменьшения трафика на сайте.

    Пример файла sitemap.xml

    <?xml version=«1.0″ encoding=«UTF-8″?>

    <urlset xmlns=«http://www.sitemaps.org/schemas/sitemap/0.9″>

    <url> <loc>https://site.com.ua</loc>

    <lastmod>2020-01-10T08:12:32+00:00</lastmod>

    <changefreq>weekly</changefreq>

    <priority>1.0</priority> </url>

    <url> <loc>https://site.com.ua/other/standart-banners-sizes.html </loc>

    <lastmod>2020-01-10T08:12:32+00:00</lastmod>

    <changefreq>weekly</changefreq>

    <priority>0.9</priority> </url>

    <url> <loc>https://site.com.ua/htmlcss/dataurl.html </loc>

    <lastmod>2020-01-10T11:19:49+00:00</lastmod>

    <changefreq>weekly</changefreq>

    <priority>0.9</priority> </url>

    <url> <loc>https://site.com.ua/htmlcss/internet-shop-gallery.html </loc>

    <lastmod>2020-01-10T14:38:43+00:00</lastmod>

    <changefreq>weekly</changefreq>

    <priority>0.9</priority> </url>

    </urlset>

    Пример файла содержащего перечисление под-карт

    Если сайт имеет сложную структуру и много разделов, для удобства анализа, допускается разбиение карты сайта на под-карты, каждая из которых содержит перечисления страниц подраздела.

    <?xml version=«1.0» encoding=«UTF-8»?>

    <sitemapindex xmlns=«http://www.sitemaps.org/schemas/sitemap/0.9»>

    <sitemap> <loc>https://site.com.ua/sitemaps/sections.1935.xml.gz </loc>

    <lastmod>2020-01-10</lastmod> </sitemap>

    <sitemap> <loc>https://site.com.ua/sitemaps/gallery.2258.xml.gz </loc>

    <lastmod>2020-01-13</lastmod> </sitemap>

    <sitemap> <loc>https://site.com.ua/sitemaps/gallery.2259.xml.gz </loc>

    <lastmod>2020-01-19</lastmod> </sitemap>

    </sitemapindex>

    XML sitemap для изображений

    Для добавления картинок в карту сайта следует использовать дополнительные теги, для указания подробной информации об изображении, где используются следующие теги:

    Тэг

    Описание тега

    <image:image>

    Тег, указывающий информацию об одной картинке, является обязательным атрибутом. Можно использовать до 1000 тегов <image:image> в рамках одного тега <loc>

    <image:loc>

    Тег, указывающий адрес изображения, является обязательным атрибутом

    <image:title>

    Тег, указывающий название

    <image:caption>

    Тег, указывающий описание

    <image:geo_location>

    Тег, указывающий геолокацию

    <image:license>

    Тег, указывающий лицензию

    Пример карты сайта для изображений:

    <?xml version=»1.0″ encoding=»UTF-8″?>

    <urlset xmlns=»http://www.sitemaps.org/schemas/sitemap/0.9«

    xmlns:image=»http://www.google.com/schemas/sitemap-image/1.1″>

    <url>

    <loc>https://site.com.ua</loc>

    <image:image>

    <image:loc>https://site.com.ua/photo1.jpg </image:loc>

    </image:image>

    <image:image>

    <image:loc>https://site.com.ua/photo2.jpg </image:loc>

    </image:image>

    </url>

    </urlset>

    XML-карта для Google Новостей

    При формировании используются следующие обязательные теги

    Тэг

    Описание тэга

    <publication>

    Тэг, указывающий на издательство публикации. Должен содержать два обязательных тега <name> — название издательства, и <language> — язык издания согласно формата ISO 639.

    <publication_date>

    Тэг, указывающий дату и время публикации статьи на сайте согласно формата W3C

    <title>

    Тэг, указывающий название статьи

    Пример карты сайта для новостей:

    <?xml version=»1.0″ encoding=»UTF-8″?>

    <urlset xmlns=»http://www.sitemaps.org/schemas/sitemap/0.9«

    xmlns:news=»http://www.google.com/schemas/sitemap-news/0.9″>

    <url>

    <loc>https://site.com.ua/news </loc>

    <news:news>

    <news:publication>

    <news:name>Название издательства</news:name>

    <news:language>ru</news:language>

    </news:publication>

    <news:publication_date>2020-01-10</news:publication_date>

    <news:title>Название статьи</news:title>

    </news:news>

    </url>

    </urlset>

    Карта сайта для видео

    Если сайт содержит большое количество видео-материалов, следует создавать отдельную карту сайта в формате XML для видео. Подробнее о том, как создать карту сайта для видео-материалов читайте в справочном центре Google.

    Файл карты сайта в формате XML можно формировать вручную используя программы и сервисы которые формируют файл карты сайта, просканировав страницы сайта, или формировать автоматически используя программную реализацию которая автоматически обновляет карту сайта при добавлении, или изменении страниц сайта.

    В случае изменения, файла карты сайта его следует пинговать для поисковой системы Google, то есть уведомлять поисковую систему о обновлении файла с целью ускорения индексации новых страниц.

    Ссылка для пингования карты сайта для Google:

    http://www.google.com/ping?sitemap=https://site.com.ua/sitemap.xml

    Где https://site.com.ua/sitemap.xml адрес карты сайта

    Сервис генерации карты сайта

    Для небольших проектов, где новый контент добавляется редко, более рационально единоразово самому сгенерить карту сайта и не тратить ресурсы на реализацию автогенерируемой карты.

    Для этого можно использовать XML-Sitemaps — cервис позволяющий сформировать карту сайта на основе структуры сайта с заданием параметров приоритета страниц, частоты обновления.

    Среди других сервисов, можно выделить:

    Или использовать функционал таких программ как

    Готовые модули генерации карты сайта для распространенных движков

    Для дополнительных возможностей и генерации большого объема страниц лучше использовать готовые модули. Ниже приведен список для популярных платформ:

    Google XML Sitemaps — модуль автоматической генерации карты сайта и ее пингования для движка WordPress.

    Sitemap Generator — модуль генерации карты сайта для движка Joomla.

    GoogleSitemap0.9 — модуль генерации для движка ModX.

    Simple Google Sitemap — модуль генерации для движка OpenCart.

    Фреймворк для сайта — Django Документация на русском

    Django поставляется с высокоуровневым фреймворком для создания карты сайта для создания XML-файлов карты сайта .

    Обзор

    Карта сайта — это файл XML на вашем веб-сайте, который сообщает индексаторам поисковых систем, как часто ваши страницы меняются и насколько «важны» определенные страницы по отношению к другим страницам вашего сайта. Эта информация помогает поисковым системам индексировать ваш сайт.

    Платформа карты сайта Django автоматизирует создание этого XML-файла, позволяя выражать эту информацию в коде Python.

    Он работает так же, как структура синдикации Django . Чтобы создать карту сайта, напишите Sitemapкласс и укажите на него в своем URLconf .

    Установка

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

    1. Добавьте 'django.contrib.sitemaps'к своей INSTALLED_APPSнастройке.
    2. Убедитесь, что ваш TEMPLATESпараметр содержит DjangoTemplates серверную часть, для которой APP_DIRSзаданы параметры True. Он там по умолчанию, поэтому вам нужно будет изменить это только в том случае, если вы изменили этот параметр.
    3. Убедитесь, что вы установили .sites framework

    (Примечание: приложение карты сайта не устанавливает никаких таблиц базы данных. Единственная причина, по которой ему нужно войти, INSTALLED_APPS— это чтобы Loader()загрузчик шаблонов мог найти шаблоны по умолчанию.)

    Инициализация

    views.sitemap( запрос , карты сайта , section = None , template_name = ‘sitemap.xml’ , content_type = ‘application / xml’ )

    Чтобы активировать создание карты сайта на своем сайте Django, добавьте эту строку в свой URLconf :

    from django.contrib.sitemaps.views import sitemap
    
    path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
         name='django.contrib.sitemaps.views.sitemap')
    

    Это указывает Django создавать карту сайта при обращении клиента /sitemap.xml.

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

    Вид карты сайта принимает дополнительный обязательный аргумент: . должен быть словарем, который отображает короткую метку раздела (например, или ) в свой класс (например, или ). Он может также карту к примеру из в классе (например, ).{'sitemaps': sitemaps}sitemapsblognewsSitemapBlogSitemapNewsSitemapSitemapBlogSitemap(some_var)

    Sitemapклассы

    SitemapКласс является классом Python , который представляет собой «раздел» записей в карте сайта. Например, один Sitemapкласс может представлять все записи вашего веб-журнала, а другой — все события в вашем календаре событий.

    В простейшем случае все эти разделы объединяются в один sitemap.xml, но также можно использовать фреймворк для создания индекса карты сайта, который ссылается на отдельные файлы карты сайта, по одному на раздел. (См. Раздел Создание индекса карты сайта ниже.)

    Sitemapклассы должны быть подклассами django.contrib.sitemaps.Sitemap. Они могут жить где угодно в вашей кодовой базе.

    Пример

    Предположим, у вас есть система блогов с Entryмоделью, и вы хотите, чтобы ваша карта сайта включала все ссылки на ваши отдельные записи блога. Вот как может выглядеть ваш класс карты сайта:

    from django.contrib.sitemaps import Sitemap
    from blog.models import Entry
    
    class BlogSitemap(Sitemap):
        changefreq = "never"
        priority = 0.5
    
        def items(self):
            return Entry.objects.filter(is_draft=False)
    
        def lastmod(self, obj):
            return obj.pub_date
    

    Примечание:

    • changefreqи priorityатрибуты класса , соответствующие <changefreq>и <priority>элементы, соответственно. Их можно сделать вызываемыми как функции, как это lastmodбыло в примере.
    • items()— это метод, который возвращает последовательность или QuerySetобъекты. Объекты , возвращаемые будут получать переданы любые ГОО методы , соответствующие свойства карты сайта ( location, lastmod, changefreqи priority).
    • lastmodдолжен вернуть datetime.
    • В locationэтом примере нет метода, но вы можете предоставить его, чтобы указать URL-адрес вашего объекта. По умолчанию location()вызывает get_absolute_url()каждый объект и возвращает результат.

    Sitemapссылка на класс
    класс Sitemap

    SitemapКласс можно определить следующие методы / атрибуты:

    items

    Обязательный. Метод, возвращающий последовательность или QuerySet объекты. Фреймворку безразлично, к какому типу они относятся; все , что имеет значение в том , что эти объекты получают перешли к location(), lastmod(), changefreq()и priority()методы.

    location

    По желанию. Либо метод, либо атрибут.

    Если это метод, он должен возвращать абсолютный путь для данного объекта, возвращенный items().

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

    В обоих случаях «абсолютный путь» означает URL-адрес, который не включает протокол или домен. Примеры:

    • Хорошо: '/foo/bar/'
    • Плохо: 'example.com/foo/bar/'
    • Плохо: 'https://example.com/foo/bar/'

    Если locationне указан, платформа вызовет get_absolute_url()метод для каждого объекта, возвращенного items().

    Чтобы указать протокол, отличный от 'http', используйте protocol.

    lastmod

    По желанию. Либо метод, либо атрибут.

    Если это метод, он должен принимать один аргумент — объект, возвращаемый им items()— и возвращать дату / время последнего изменения этого объекта в виде файла datetime.

    Если это атрибут, его значение должно datetime представлять дату / время последнего изменения для каждого объекта, возвращаемого items().

    Если у всех элементов в карте сайта есть lastmod, то у карты сайта, созданной с помощью, views.sitemap()будет Last-Modified заголовок, равный последнему lastmod. Вы можете активировать, ConditionalGetMiddlewareчтобы Django должным образом отвечал на запросы с If-Modified-Since заголовком, который предотвратит отправку карты сайта, если она не изменилась.

    changefreq

    По желанию. Либо метод, либо атрибут.

    Если это метод, он должен принимать один аргумент — объект, возвращаемый им items()— и возвращать частоту изменения этого объекта в виде строки.

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

    Возможные значения changefreq, независимо от того, используете ли вы метод или атрибут:

    • 'always'
    • 'hourly'
    • 'daily'
    • 'weekly'
    • 'monthly'
    • 'yearly'
    • 'never'
    priority

    По желанию. Либо метод, либо атрибут.

    Если это метод, он должен принимать один аргумент — объект, возвращаемый им, items()— и возвращать приоритет этого объекта в виде строки или числа с плавающей запятой.

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

    Примеры значений для priority: 0.4, 1.0. Приоритет страницы по умолчанию 0.5. См. Документацию sitemaps.org для получения дополнительной информации.

    protocol

    По желанию.

    Этот атрибут определяет протокол ( 'http'или 'https') URL-адресов в карте сайта. Если он не установлен, используется протокол, с помощью которого была запрошена карта сайта. Если карта сайта создается вне контекста запроса, по умолчанию используется 'http'.

    limit

    По желанию.

    Этот атрибут определяет максимальное количество URL-адресов, включенных на каждую страницу карты сайта. Его значение не должно превышать значение по умолчанию 50000, которое является верхним пределом, разрешенным протоколом Sitemap .

    i18n

    По желанию.

    Логический атрибут, который определяет, должны ли URL-адреса этой карты сайта создаваться с использованием всех ваших файлов LANGUAGES. По умолчанию это False.

    languages

    Новое в Django 3.2.

    По желанию.

    Последовательность из языковых кодов , чтобы использовать для создания альтернативных ссылок , когда i18nвключено. По умолчанию LANGUAGES.

    alternates

    Новое в Django 3.2.

    По желанию.

    Логический атрибут. При использовании вместе с i18nсгенерированными URL-адресами каждый будет иметь список альтернативных ссылок, указывающих на другие языковые версии с использованием атрибута hreflang . По умолчанию это False.

    x_default

    Новое в Django 3.2.

    По желанию.

    Логический атрибут. Когда Trueальтернативные ссылки, созданные с помощью, alternatesбудут содержать hreflang="x-default" резервную запись со значением LANGUAGE_CODE. По умолчанию это False.

    Ярлыки

    Фреймворк карты сайта предоставляет удобный класс для общего случая:

    classGenericSitemap ( info_dict , priority = None , changefreq = None , protocol = None )

    django.contrib.sitemaps.GenericSitemapКласс позволяет создать карту сайта, передав его словарь , который должен содержать , по крайней мере, querysetзапись. Этот набор запросов будет использоваться для создания элементов карты сайта. Он также может иметь date_fieldзапись, определяющую поле даты для объектов, извлеченных из queryset. Это будет использоваться для lastmodатрибута в сгенерированной карте сайта.

    В priority, changefreqи protocolключевые аргументы позволяют указать эти атрибуты для всех URL — адресов.

    Пример

    Вот пример привязок с помощью GenericSitemap:

    from django.contrib.sitemaps import GenericSitemap
    from django.contrib.sitemaps.views import sitemap
    from django.urls import path
    from blog.models import Entry
    
    info_dict = {
        'queryset': Entry.objects.all(),
        'date_field': 'pub_date',
    }
    
    urlpatterns = [
        # some generic view using info_dict
        # ...
    
        # the sitemap
        path('sitemap.xml', sitemap,
             {'sitemaps': {'blog': GenericSitemap(info_dict, priority=0.6)}},
             name='django.contrib.sitemaps.views.sitemap'),
    ]
    

    Карта сайта для статических представлений

    Часто вы хотите, чтобы сканеры поисковых систем индексировали просмотры, которые не являются ни страницами с подробными сведениями об объектах, ни плоскими страницами. Решение состоит в том, чтобы явно список имен URL для этих видов в itemsи вызове reverse()в locationспособе сайта. Например:

    # sitemaps.py
    from django.contrib import sitemaps
    from django.urls import reverse
    
    class StaticViewSitemap(sitemaps.Sitemap):
        priority = 0.5
        changefreq = 'daily'
    
        def items(self):
            return ['main', 'about', 'license']
    
        def location(self, item):
            return reverse(item)
    
    # urls.py
    from django.contrib.sitemaps.views import sitemap
    from django.urls import path
    
    from .sitemaps import StaticViewSitemap
    from . import views
    
    sitemaps = {
        'static': StaticViewSitemap,
    }
    
    urlpatterns = [
        path('', views.main, name='main'),
        path('about/', views.about, name='about'),
        path('license/', views.license, name='license'),
        # ...
        path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
             name='django.contrib.sitemaps.views.sitemap')
    ]
    

    Создание индекса сайта

    views.index( запрос , карты сайта , template_name = ‘sitemap_index.xml’ , content_type = ‘application / xml’ , sitemap_url_name = ‘django.contrib.sitemaps.views.sitemap’ )

    Фреймворк карты сайта также имеет возможность создавать индекс карты сайта, который ссылается на отдельные файлы карты сайта, по одному для каждого раздела, определенного в вашем sitemapsсловаре. Единственные различия в использовании:

    Вот как будут выглядеть соответствующие строки URLconf для приведенного выше примера:

    from django.contrib.sitemaps import views
    
    urlpatterns = [
        path('sitemap.xml', views.index, {'sitemaps': sitemaps}),
        path('sitemap-<section>.xml', views.sitemap, {'sitemaps': sitemaps},
             name='django.contrib.sitemaps.views.sitemap'),
    ]
    

    Это автоматически создаст sitemap.xmlфайл, который ссылается как на, так sitemap-flatpages.xmlи на sitemap-blog.xml. В Sitemapклассах и sitemaps ДИКТ не меняются.

    Вам следует создать индексный файл, если одна из ваших карт сайта содержит более 50 000 URL-адресов. В этом случае Django автоматически разбивает карту сайта на страницы, и индекс это отразит.

    Если вы не используете обычное представление карты сайта — например, если оно обернуто декоратором кеширования — вы должны назвать свое представление карты сайта и перейти sitemap_url_nameк просмотру индекса:

    from django.contrib.sitemaps import views as sitemaps_views
    from django.views.decorators.cache import cache_page
    
    urlpatterns = [
        path('sitemap.xml',
             cache_page(86400)(sitemaps_views.index),
             {'sitemaps': sitemaps, 'sitemap_url_name': 'sitemaps'}),
        path('sitemap-<section>.xml',
             cache_page(86400)(sitemaps_views.sitemap),
             {'sitemaps': sitemaps}, name='sitemaps'),
    ]
    

    Настройка шаблона

    Если вы хотите использовать разные шаблоны для каждой карты сайта или индекса карты сайта, доступного на вашем сайте, вы можете указать его, передав template_name параметр в представления sitemapи indexчерез URLconf:

    from django.contrib.sitemaps import views
    
    urlpatterns = [
        path('custom-sitemap.xml', views.index, {
            'sitemaps': sitemaps,
            'template_name': 'custom_sitemap.html'
        }),
        path('custom-sitemap-<section>.xml', views.sitemap, {
            'sitemaps': sitemaps,
            'template_name': 'custom_sitemap.html'
        }, name='django.contrib.sitemaps.views.sitemap'),
    ]
    

    Эти представления возвращают TemplateResponse экземпляры, которые позволяют легко настроить данные ответа перед рендерингом. Дополнительные сведения см. В документации TemplateResponse .

    Переменные контекста

    При настройке шаблонов для представлений index()и sitemap()вы можете полагаться на следующие переменные контекста.

    Указатель

    Переменная sitemapsпредставляет собой список абсолютных URL-адресов для каждой карты сайта.

    Карта сайта

    Переменная urlsetпредставляет собой список URL-адресов, которые должны отображаться в карте сайта. Каждый URL-адрес предоставляет атрибуты, определенные в Sitemapклассе:

    • alternates
    • changefreq
    • item
    • lastmod
    • location
    • priority

    alternatesАтрибут доступен , когда i18nи alternatesвключены. Это список других языковых версий, включая необязательный x_defaultрезервный вариант для каждого URL-адреса. Каждый альтернативный является словарём locationи lang_codeключи.

    Изменено в Django 3.2:

    alternatesАтрибут был добавлен.

    itemДобавлен атрибут для каждого URL , чтобы позволить более гибкой настройки шаблонов, таких как новости Google Sitemaps . Предположим, что Sitemap items()вернет список элементов publication_dataи tagsполе, подобное этому, сгенерирует карту сайта, совместимую с Google News:

    <?xml version="1.0" encoding="UTF-8"?>
    <urlset
      xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
      xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
    {% spaceless %}
    {% for url in urlset %}
      <url>
        <loc>{{ url.location }}</loc>
        {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
        {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
        {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
        <news:news>
          {% if url.item.publication_date %}<news:publication_date>{{ url.item.publication_date|date:"Y-m-d" }}</news:publication_date>{% endif %}
          {% if url.item.tags %}<news:keywords>{{ url.item.tags }}</news:keywords>{% endif %}
        </news:news>
       </url>
    {% endfor %}
    {% endspaceless %}
    </urlset>
    

    Pinging Google

    Вы можете захотеть «пинговать» Google, когда ваша карта сайта изменится, чтобы он знал, что нужно переиндексировать ваш сайт. Рамки Sitemaps обеспечивает функцию , чтобы сделать только что: django.contrib.sitemaps.ping_google().

    ping_google( sitemap_url = Нет , ping_url = PING_URL , sitemap_uses_https = True )

    ping_google принимает эти необязательные аргументы:

    • sitemap_url— Абсолютный путь к карте сайта вашего сайта (например, '/sitemap.xml'). Если этот аргумент не указан, ping_google попытается выяснить вашу карту сайта, выполнив обратный поиск в вашем URLconf.
    • ping_url— По умолчанию используется инструмент Google Ping Tool: https://www.google.com/webmasters/tools/ping .
    • sitemap_uses_https— Установите, Falseесли ваш сайт использует http вместо https.

    ping_google()вызывает исключение, django.contrib.sitemaps.SitemapNotFoundесли не может определить URL вашей карты сайта.

    Один из полезных способов вызова ping_google()— из save() метода модели :

    from django.contrib.sitemaps import ping_google
    
    class Entry(models.Model):
        # ...
        def save(self, force_insert=False, force_update=False):
            super().save(force_insert, force_update)
            try:
                ping_google()
            except Exception:
                # Bare 'except' because we could get a variety
                # of HTTP-related exceptions.
                pass
    

    Однако более эффективным решением будет вызов ping_google()из сценария cron или другой запланированной задачи. Функция отправляет HTTP-запрос на серверы Google, поэтому вы можете не захотеть вводить эти сетевые накладные расходы каждый раз при вызове save().

    Проверка связи с Google через

    manage.py
    django-admin ping_google [sitemap_url]

    После того, как приложение Sitemap добавлено в ваш проект, вы также можете проверить связь с Google с помощью команды ping_googleуправления:

    python manage.py ping_google [/sitemap.xml]
    
    --sitemap-uses-http

    Используйте эту опцию, если ваша карта сайта использует httpвместо https.

    sitemaps.org — Протокол

    Перейти к:
    Определения тегов XML
    Экранирование объекта
    Использование файлов индекса Sitemap
    Другие форматы Sitemap
    Местоположение файла Sitemap
    Проверка вашего Sitemap
    Расширение протокола Sitemaps
    Информирование поисковых роботов

    Этот документ описывает схему XML для протокола Sitemap.

    Формат протокола Sitemap состоит из тегов XML. Все значения данных в файле Sitemap должны быть экранированным от сущности. Сам файл должен быть в кодировке UTF-8.

    Файл Sitemap должен:

    • Начните с открывающего тега и заканчиваться закрывающим тегом .
    • Укажите пространство имен (стандарт протокола) в ярлык.
    • Включите запись для каждого URL, как родительский тег XML.
    • Включите дочернюю запись для каждого родительский тег.

    Все остальные теги необязательны. Поддержка этих необязательных тегов может варьироваться в зависимости от поиска. двигатели.За подробностями обращайтесь к документации каждой поисковой системы.

    Кроме того, все URL-адреса в файле Sitemap должны быть с одного хоста, например www.example.com. или store.example.com. Для получения дополнительных сведений см. Файл Sitemap. расположение

    Образец XML-файла Sitemap

    В следующем примере показан файл Sitemap, содержащий только один URL и использующий все необязательные теги.Необязательные теги выделены курсивом.

    
    
    
    
    
    
     http://www.example.com/ 
    
      01.01.2005 
    
     ежемесячно 
    
     0,8  
    
    
    
    
    
     

    Также посмотрите наш пример с несколькими URL-адресами.

    Определения тегов XML

    Доступные теги XML описаны ниже.

    Атрибут Описание
    требуется

    Инкапсулирует файл и ссылается на текущий стандарт протокола.

    требуется

    Родительский тег для каждой записи URL. Остальные теги являются дочерними по отношению к этому тегу.

    требуется

    URL страницы. Этот URL-адрес должен начинаться с протокола (например, http) и заканчиваться на косая черта в конце, если этого требует ваш веб-сервер.Это значение должно быть меньше 2048. символы.

    по желанию

    Дата последней модификации файла.Эта дата должна быть в Формат даты и времени W3C. Этот формат позволяет опускать временную часть, если желаемый и используйте ГГГГ-ММ-ДД.

    Обратите внимание, что этот тег отделен от заголовка If-Modified-Since (304) сервера могут возвращаться, а поисковые системы могут использовать информацию из обоих источников по-разному.

    <частота смены> по желанию

    Как часто страница будет меняться. Это значение предоставляет общую информацию поисковым системам и может не соответствовать точно тому, как часто они сканируют страницу.Допустимые значения:

    • всегда
    • почасово
    • ежедневно
    • еженедельно
    • ежемесячно
    • годовой
    • никогда

    Значение «всегда» следует использовать для описания документов, которые меняются каждый раз, когда они доступны.Значение «никогда» следует использовать для описания заархивированных URL-адресов.

    Обратите внимание, что значение этого тега считается подсказкой , а не командой. Даже если сканеры поисковых систем могут учитывать эту информацию при принятии решений, они могут сканировать страницы с пометкой «ежечасно» реже, чем это, и они могут сканировать страницы с пометкой «ежегодно» чаще, чем это.Поисковые роботы могут периодически сканировать страницы с пометкой «никогда», чтобы они могли обрабатывать неожиданные изменения на этих страницах.

    <приоритет> по желанию

    Приоритет этого URL-адреса по отношению к другим URL-адресам на вашем сайте.Диапазон допустимых значений от 0,0 до 1,0. Это значение не влияет на то, как ваши страницы сравниваются со страницами. на других сайтах — он позволяет только поисковым системам узнать, какие страницы вы считаете наиболее важно для сканеров.

    По умолчанию приоритет страницы равен 0,5.

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

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

    Вернуться к началу

    Сущность убегает

    Ваш файл Sitemap должен иметь кодировку UTF-8 (обычно это можно сделать при сохранении файл).Как и во всех файлах XML, любые значения данных (включая URL-адреса) должны использовать entity escape-коды для символов, перечисленных в таблице ниже.

    Характер Код выхода
    Амперсанд & & amp;
    Одиночная цитата & apos;
    Двойная кавычка » & quot;
    Больше чем > & gt;
    Меньше, чем < & lt;

    Кроме того, все URL-адреса (включая URL-адрес вашего файла Sitemap) должны иметь экранирование URL-адресов и закодированы для удобства чтения веб-сервером, на котором они расположены.Однако если вы используете любой сценарий, инструмент или файл журнала для генерации ваших URL-адресов (что угодно кроме ввода вручную), обычно это уже сделано за вас. пожалуйста, проверьте чтобы убедиться, что ваши URL-адреса следуют RFC-3986 стандарт для URI, RFC-3987 стандарт для IRI и стандарт XML.

    Ниже приведен пример URL-адреса, в котором используется символ, отличный от ASCII ( ü ), а также символ, который требует экранирования сущности ( и ):

     http: // www.example.com/ümlat.php&q=name 

    Ниже приведен тот же URL-адрес в кодировке ISO-8859-1 (для размещения на сервере, который использует этот кодировка) и экранированный URL:

     http://www.example.com/%FCmlat.php&q=name 

    Ниже приведен тот же URL-адрес в кодировке UTF-8 (для размещения на сервере, который использует эту кодировку). и экранированный URL:

     http: // www.example.com/%C3%BCmlat.php&q=name 

    Ниже тот же URL, но также экранированный объект:

     http://www.example.com/%C3%BCmlat.php&q=name 

    Образец XML-файла Sitemap

    В следующем примере показан файл Sitemap в формате XML. Карта сайта в примере содержит небольшое количество URL-адресов, каждый из которых использует свой набор необязательных параметров.

    
    
    
    
    
    
     http://www.example.com/ 
    
     1 января 2005 г. 
    
     ежемесячно 
    
     0,8 
    
    
    
    
    
     http: // www.example.com/catalog?item=12&desc=vacation_hawaii 
    
     еженедельно 
    
    
    
    
    
     http://www.example.com/catalog?item=73&desc=vacation_new_zealand 
    
     23 декабря 2004 г. 
    
     еженедельно 
    
    
    
    
    
     http: // www.example.com/catalog?item=74&desc=vacation_newfoundland 
    
     2004-12-23T18: 00: 15 + 00: 00 
    
     0,3 
    
    
    
    
    
     http://www.example.com/catalog?item=83&desc=vacation_usa 
    
     23 ноября 2004 г. 
    
    
    
    
    
     

    Вернуться к началу

    Использование файлов индекса Sitemap (для группировки нескольких файлов Sitemap файлы)

    Вы можете предоставить несколько файлов Sitemap, но каждый предоставленный файл Sitemap должен иметь не более 50 000 URL и не должен превышать 50 МБ (52 428 800 байт).При желании вы можете сжать файлы Sitemap с помощью gzip, чтобы уменьшить размер файла. требования к пропускной способности; однако файл карты сайта после распаковки не должен быть больше чем 50 МБ. Если вы хотите указать более 50 000 URL-адресов, необходимо создать несколько файлов Sitemap. файлы.

    Если вы предоставляете несколько файлов Sitemap, вам следует затем перечислить каждый файл Sitemap в Файл индекса Sitemap.Файлы индекса Sitemap не могут содержать более 50 000 файлов Sitemap и не должен превышать 50 МБ (52 428 800 байт) и может быть сжат. Вы можете иметь более одного файла индекса Sitemap. XML-формат файла индекса Sitemap очень аналогичен формату XML файла Sitemap.

    Файл индекса Sitemap должен:

    • Начать с открытия и заканчиваться закрывающим тегом .
    • Включить запись для каждого файла Sitemap в качестве родительского тега XML.
    • Включить дочернюю запись для каждый родительский тег .

    Необязательный тег также доступен для файлов индекса Sitemap.

    Примечание. В файле индекса Sitemap можно указывать только найденные файлы Sitemap. на том же сайте, что и файл индекса Sitemap. Например, http://www.yoursite.com/sitemap_index.xml может включать файлы Sitemap на http://www.yoursite.com, но не на http://www.example.com или http://yourhost.yoursite.com. Как и в случае с файлами Sitemap, ваш файл индекса Sitemap должен быть в кодировке UTF-8.

    Образец XML-файла Sitemap Индекс

    В следующем примере показан индекс Sitemap, в котором перечислены два файла Sitemap:

    
    
    
    
    <карта сайта>
    
     http://www.example.com/sitemap1.xml.gz 
    
     2004-10-01T18: 23: 17 + 00: 00 
    
    
    
    <карта сайта>
    
     http: // www.example.com/sitemap2.xml.gz 
    
     1 января 2005 г. 
    
    
    
    
    
     

    Примечание. URL-адреса файлов Sitemap, как и все значения в ваших файлах XML, должны быть сущность сбежала.

    Карта сайта Индексировать определения тегов XML

    Атрибут Описание
    требуется Инкапсулирует информацию обо всех файлах Sitemap в файле.
    <карта сайта> требуется Инкапсулирует информацию об отдельном файле Sitemap.
    требуется

    Определяет расположение файла Sitemap.

    Этим расположением может быть файл Sitemap, файл Atom, файл RSS или простой текстовый файл.

    по желанию

    Определяет время изменения соответствующего файла Sitemap.Это не соответствуют времени изменения любой из страниц, перечисленных в этом файле Sitemap. Значение тега lastmod должно быть в Формат даты и времени W3C.

    Указав отметку времени последней модификации, вы активируете сканеры поисковых систем. для получения только части файлов Sitemap в индексе i.е. сканер может только получить Файлы Sitemap, которые были изменены с определенной даты. Эта инкрементальная загрузка файла Sitemap Механизм позволяет быстро обнаруживать новые URL-адреса на очень больших сайтах.

    Вернуться к началу

    Другие форматы файлов Sitemap

    Протокол Sitemap позволяет вам предоставлять подробную информацию о ваших страницах поисковым системам, и мы поощряем его использование, так как вы можете предоставить дополнительную информацию о сайте страницы за пределами URL-адресов.Однако в дополнение к протоколу XML мы поддерживаем RSS-каналы и текстовые файлы, которые предоставляют более ограниченную информацию.

    Канал синдикации

    Вы можете предоставить канал RSS (Real Simple Syndication) 2.0 или Atom 0.3 или 1.0. В целом, вы можете использовать этот формат только в том случае, если на вашем сайте уже есть канал распространения. Примечание что этот метод может не сообщать поисковым системам обо всех URL-адресах на вашем сайте, поскольку фид может предоставлять информацию только о недавних URL-адресах, хотя поисковые системы все еще может использовать эту информацию, чтобы узнавать о других страницах вашего сайта во время их обычные процессы сканирования путем перехода по ссылкам на страницах фида.Делать убедитесь, что канал находится в каталоге самого высокого уровня, который вы хотите поисковыми системами. ползти. Поисковые системы извлекают информацию из фида следующим образом:

    • Поле <ссылка> — указывает URL
    • поле даты изменения (поле для RSS-каналов и дата для каналов Atom) — указывает, когда каждый URL был изменен в последний раз.Использование поле даты изменения не является обязательным.

    Текстовый файл

    Вы можете предоставить простой текстовый файл, содержащий по одному URL-адресу в каждой строке. Текстовый файл должен следовать этим рекомендациям:

    • Текстовый файл должен иметь по одному URL-адресу в строке. URL-адреса не могут содержать встроенные новые строки.
    • Необходимо полностью указать URL-адреса, включая http.
    • Каждый текстовый файл может содержать не более 50 000 URL-адресов и не должен превышать 50 МБ. (52 428 800 байт). Если ваш сайт содержит более 50 000 URL-адресов, вы можете разделить список в несколько текстовых файлов и добавляйте каждый по отдельности.
    • Текстовый файл должен использовать кодировку UTF-8. Вы можете указать это при сохранении файла (например, в Блокноте это указано в меню «Кодировка» диалогового окна «Сохранить как». коробка).
    • Текстовый файл не должен содержать никакой информации, кроме списка URL-адресов.
    • Текстовый файл не должен содержать информации верхнего или нижнего колонтитула.
    • При желании вы можете сжать текстовый файл Sitemap с помощью gzip, чтобы уменьшить ваши требования к пропускной способности.
    • Вы можете назвать текстовый файл как хотите. Убедитесь, что ваш URL-адреса соответствуют стандарту RFC-3986 для URI стандарт RFC-3987 для IRI
    • Вы должны загрузить текстовый файл в каталог самого высокого уровня, который вы хотите поисковыми системами. для сканирования и убедитесь, что вы не перечисляете URL-адреса в текстовом файле, которые находятся в каталоге более высокого уровня.

    Примеры записей в текстовом файле показаны ниже.

     http://www.example.com/catalog?item=1
    
     
    http://www.example.com/catalog?item=11

    Вернуться к началу

    Расположение файла Sitemap

    Расположение файла Sitemap определяет набор URL-адресов, которые можно включить в этот файл Sitemap.Файл Sitemap, расположенный по адресу http://example.com/catalog/sitemap.xml, может включать любые URL-адреса, начинающиеся с http://example.com/catalog/, но не могут включать URL-адреса начиная с http://example.com/images/.

    Если у вас есть разрешение на изменение http://example.org/path/sitemap.xml, это предполагается, что у вас также есть разрешение на предоставление информации для URL-адресов с префиксом http: // пример.org / путь /. Примеры URL-адресов, считающихся действительными в http://example.com/catalog/sitemap.xml включают:

    http://example.com/catalog/show?item=23
    
    http://example.com/catalog/show?item=233&user=3453
    
     

    URL-адреса, недопустимые в http://example.com/catalog/sitemap.xml, включают:

    http://example.com/image/show?item=23
    
    http: // пример.ru / image / show? item = 233 & user = 3453
    
    https://example.com/catalog/page1.php
    
     

    Обратите внимание: это означает, что все URL-адреса, перечисленные в файле Sitemap, должны использовать один и тот же протокол. (http, в этом примере) и находятся на том же хосте, что и Sitemap. Например, если файл Sitemap находится по адресу http://www.example.com/sitemap.xml, он не может включать URL-адреса из поддомена http: //.example.com.

    URL-адреса, которые не считаются действительными, исключаются из дальнейшего рассмотрения. это настоятельно рекомендуется разместить файл Sitemap в корневом каталоге вашего веб-сайта. сервер. Например, если ваш веб-сервер находится по адресу example.com, то ваш индекс Sitemap файл будет по адресу http://example.com/sitemap.xml. В некоторых случаях вам может понадобиться для создания разных файлов Sitemap для разных путей (например,g., если разрешения безопасности в вашей организации разделите доступ на запись к разным каталогам).

    Если вы отправляете Sitemap, используя путь с номером порта, вы должны указать этот порт. число как часть пути в каждом URL, указанном в файле Sitemap. Например, если ваш файл Sitemap находится по адресу http://www.example.com:100/sitemap.xml, то каждый URL-адрес, указанный в файле Sitemap, должен начинаться с http: // www.example.com:100.

    Файлы Sitemap и Cross Подает

    Чтобы отправить файлы Sitemap для нескольких хостов с одного хоста, вам необходимо «подтвердить» право собственности. хоста (ов), URL-адреса которых отправляются в Sitemap. Вот пример. Допустим, вы хотите отправить файлы Sitemap для 3 хостов:

    www.host1.com с файлом Sitemap sitemap-host1.xml
    
    www.host2.com с файлом Sitemap sitemap-host2.xml
    
    www.host3.com с файлом Sitemap sitemap-host3.xml
    
     

    Более того, вы хотите разместить все три файла Sitemap на одном хосте: www.sitemaphost.com. Таким образом, URL-адреса файлов Sitemap будут:

    http://www.sitemaphost.com/sitemap-host1.xml
    
    http: // www.sitemaphost.com/sitemap-host2.xml
    
    http://www.sitemaphost.com/sitemap-host3.xml
    
     

    По умолчанию это приведет к ошибке «перекрестной отправки», поскольку вы пытаетесь для отправки URL-адресов для www.host1.com через карту сайта, размещенную на www.sitemaphost.com (и то же самое для двух других хостов). Один из способов избежать ошибки — доказать, что вы владеете (т.е. имеют право изменять файлы) www.host1.com. Ты можешь сделать это изменив файл robots.txt на www.host1.com так, чтобы он указывал на Sitemap на www.sitemaphost.com.

    В этом примере файл robots.txt по адресу http://www.host1.com/robots.txt будет содержать строка «Карта сайта: http://www.sitemaphost.com/sitemap-host1.xml». Изменяя Файл robots.txt на www.host1.com и указав на файл Sitemap на www.sitemaphost.com, вы неявно доказали, что являетесь владельцем www.host1.com. Другими словами, тот, кто контролирует файл robots.txt на www.host1.com доверяет карте сайта http://www.sitemaphost.com/sitemap-host1.xml содержать URL-адреса для www.host1.com. Тот же процесс можно повторить для другого два хозяина.

    Теперь вы можете отправить файлы Sitemap на сайте www.sitemaphost.com.

    Когда файл robots.txt определенного хоста, скажем http://www.host1.com/robots.txt, указывает в файл Sitemap или индекс Sitemap на другом хосте; ожидается, что для каждого из целевые файлы Sitemap, например http://www.sitemaphost.com/sitemap-host1.xml, все URL-адреса принадлежат хосту, указывающему на него. Это связано с тем, что, как отмечалось ранее, файл Sitemap ожидается, что URL-адреса будут поступать только с одного хоста.

    Вернуться к началу

    Проверка файла Sitemap

    Следующие XML-схемы определяют элементы и атрибуты, которые могут появляться в ваш файл Sitemap. Вы можете скачать эту схему по ссылкам ниже:

    Для файлов Sitemap: http: // www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
    Для файлов индекса Sitemap: http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd

    Существует ряд инструментов, которые помогут вам проверить структуру вашего Карта сайта на основе этой схемы. Вы можете найти список инструментов, связанных с XML, на каждом из по следующим адресам:

    http: // www.w3.org/XML/Schema#Tools
    http://www.xml.com/pub/a/2000/12/13/schematools.html

    Чтобы проверить ваш Sitemap или файл индекса Sitemap на соответствие схеме, XML файлу потребуются дополнительные заголовки, как показано ниже.

    Карта сайта:

    
    
    
    
    
    
    ...
    
    
    
    
    
     

    Индексный файл Sitemap:

    
    
    
    
    <карта сайта>
    
    ...
    
    
    
    
    
     

    Вернуться к началу

    Расширение протокола Sitemaps

    Вы можете расширить протокол Sitemaps, используя собственное пространство имен.Просто укажите это пространство имен в корневом элементе. Например:

    
    
     
    
    
    
    <пример: example_tag>
    
    ...
    
    
    
    ...
    
    
    
     

    Вернуться к началу

    Информирование поисковых роботов

    После того, как вы создали файл Sitemap и разместили его на своем веб-сервере, вам потребуется для информирования поисковых систем, поддерживающих этот протокол, о своем местонахождении.Вы можете сделать это с помощью:

    Затем поисковые системы могут получить ваш файл Sitemap и сделать URL-адреса доступными для их краулеры.

    Отправка файла Sitemap через поиск интерфейс подачи двигателя


    Чтобы отправить файл Sitemap непосредственно в поисковую систему, которая позволит вам получать информацию о статусе и любых ошибках обработки см. в документации каждой поисковой системы.

    Указание местоположения файла Sitemap в ваш файл robots.txt


    Вы можете указать местоположение файла Sitemap с помощью файла robots.txt. Сделать это, просто добавьте следующую строку, включающую полный URL-адрес в карту сайта:

     Карта сайта: http://www.example.com/sitemap.xml 

    Эта директива не зависит от строки пользовательского агента, поэтому не имеет значения, где вы помещаете его в свой файл.Если у вас есть файл индекса Sitemap, вы можете включить расположение только этого файла. Вам не нужно перечислять каждый отдельный файл Sitemap в списке. в индексном файле.

    Вы можете указать несколько файлов Sitemap для каждого файла robots.txt.

     Sitemap: http://www.example.com/sitemap-host1.xml
    
    Карта сайта: http://www.example.com/sitemap-host2.xml 

    Отправка файла Sitemap с помощью HTTP-запроса


    Чтобы отправить файл Sitemap с помощью HTTP-запроса (замените на URL-адрес, предоставленный поисковой системой), отправьте запрос по следующему URL-адресу:

      / ping? Sitemap = sitemap_url 

    Например, если ваш файл Sitemap находится по адресу http: // www.example.com/sitemap.gz, ваш URL станет:

      /ping?sitemap=http://www.example.com/sitemap.gz 

    URL кодирует все, что находится после / ping? Sitemap =:

      /ping?sitemap=http%3A%2F%2Fwww.yoursite.com%2Fsitemap.gz 

    Вы можете отправить HTTP-запрос с помощью wget, curl или другого механизма по вашему выбору.Успешный запрос вернет код ответа HTTP 200; если вы получите другой ответ, вы должны повторно отправить свой запрос. Код ответа HTTP 200 указывает только что поисковая система получила ваш файл Sitemap, а не сам файл Sitemap или URL-адреса, содержащиеся в нем, были действительными. Самый простой способ сделать это — настроить автоматизированный работа по созданию и отправке файлов Sitemap на регулярной основе.
    Примечание: Если вы предоставляете файл индекса Sitemap, вам нужно только для выдачи одного HTTP-запроса, который включает расположение файла индекса Sitemap; вам не нужно отправлять отдельные запросы для каждого файла Sitemap, указанного в индексе.

    Вернуться к началу

    Без содержания

    Протокол Sitemaps позволяет сообщать поисковым системам, какой контент вы хотели бы вроде проиндексировано.Чтобы указать поисковым системам контент, который вы не хотите индексировать, используйте файл robots.txt. файл или метатег robots. См. Robotstxt.org для получения дополнительной информации о том, как исключить контент из поисковых систем.

    Вернуться к началу

    Последнее обновление: 21 ноября 2016 г.

    Важность тегов XML Sitemap Priority и Changefreq

    0:00 Слушать аудиоподкаст

    К настоящему времени мы все знаем, что карта сайта XML — мощный инструмент для SEO.Карта сайта — это именно то, что вам нужно: карта вашего сайта. Он показывает все уникальные направления, куда может прибыть посетитель, от вашей домашней страницы до самой скрытой общедоступной подстраницы. В то время как средний пользователь никогда не смотрит и даже не знает о существовании карты сайта, Google, безусловно, знает.

    Отправка карты сайта в Google через Search Console — это один из первых шагов SEO, который нужно вычеркнуть из списка после того, как вы запустили свой сайт. Это сообщение сообщает Google, что ваш сайт существует, предоставляет им список всех ваших общедоступных страниц и дает им возможность проверить, когда публикуется новый контент или обновляется старый контент.

    Карты сайта настолько важны, что функциональность встроена в основные плагины SEO, такие как Yoast. Создание и распространение карты сайта занимает одно из первых мест в каждом контрольном списке SEO. В то же время, однако, это часто считается инструментом, который можно забыть. Вы создаете карту сайта, она автоматически обновляется, когда вы публикуете новый контент, вы отправляете ее в Google, и все. Вам никогда не придется смотреть на него снова, кроме как во время аудита, чтобы убедиться, что он все еще существует.

    Таким образом, большинство людей не задумываются о своих картах сайта.Еще меньше людей пытаются узнать, каковы все атрибуты, помеченные для каждого URL-адреса. Два из этих атрибутов (Priority и Chagefreq) достаточно интересны, и я хотел бы поговорить о них сегодня.

    Давайте разберемся!

    Атрибут приоритета карты сайта

    Атрибут приоритета — это необязательный атрибут, который вы можете добавить в карту сайта. Google не будет наказывать вас за его отсутствие; это просто способ предоставить Google немного больше данных об URL-адресах в вашей карте сайта. Итак, что делает тег приоритета?

    Priority, как следует из названия, просто дает оценку приоритетности части контента на вашем сайте.Это числовое значение от 0 до 1, то есть десятичное число с одной цифрой. Нулевой приоритет указывает на то, что контент с низким приоритетом, бесполезен или не обновляется. Приоритет, равный единице, означает, что контент важен для вашего сайта. Масштаб обычно выглядит примерно так:

    • 0 — 0.3: Старые новостные сообщения, устаревшие руководства, нерелевантные страницы, которые вы, тем не менее, не хотите удалять, объединять или обновлять.
    • 4 — 0,7: Статьи, сообщения в блогах, страницы категорий, часто задаваемые вопросы, системные страницы.Основная часть содержания вашего сайта попадает в этот диапазон.
    • 8 — 1.0: Чрезвычайно важный контент, такой как ваша домашняя страница, страницы основных категорий, страницы продуктов и индексы поддоменов.

    Непонятно, как Google обрабатывает контент, которому не присвоен тег приоритета. Однако можно сделать предположения, учитывая масштаб: для большей части контента обычно будет 0,5, при этом более старый и менее полезный контент будет снижаться, а определенному важному контенту будут присвоены более высокие номера.

    По сути, Google будет назначать уровни приоритета вашему контенту, если у вас нет значений по умолчанию. Вы можете выбрать собственные значения, чтобы дать Google и другим поисковым системам представление о том, что вы считаете важным на своем сайте.

    У некоторых людей может возникнуть соблазн установить приоритет каждой страницы на своем сайте на 1.0, чтобы попытаться получить дополнительную выгоду от Google. К несчастью для этих людей, Google слишком умен, чтобы попасться на такую ​​уловку, и с радостью проигнорирует установленные вами значения.

    Общий совет здесь — установить для ваших основных страниц более высокий уровень приоритета. Менее важные или менее заметные страницы не нуждаются в высоком приоритете, и это может сбить с толку поисковые системы, если вы их назначите. Ваша домашняя страница обычно имеет наивысший приоритет среди всех ваших страниц.

    Карта сайта Атрибут Chagefreq

    Атрибут Changefrew — это еще один способ, который Google использует (или использует, см. Ниже), чтобы указать, как часто может изменяться содержание страницы. Домашняя страница могла меняться каждый день.Такой сайт, как домашняя страница Forbes, меняется несколько раз в час. Высокое значение «Changefreq» (что означает частоту изменений) указывает на то, что страница, вероятно, будет изменяться чаще. И наоборот, меньшее значение Changefreq означает, что страница вряд ли вообще изменится.

    Changefreq может иметь один из семи различных атрибутов.

    1. Всегда: Это означает, что страница постоянно меняется с важными и актуальными обновлениями. Индексная страница субреддита, страница данных фондового рынка и индексная страница крупного новостного сайта могут использовать этот тег.

    2. Ежечасно: Страница обновляется ежечасно или около того. Этот тег могут использоваться на основных новостных сайтах, сайтах погоды и действующих веб-форумах.

    3. Ежедневно: Страница обновляется новым контентом в среднем один раз в день. Небольшие веб-форумы, страницы с объявлениями, ежедневные газеты и ежедневные блоги могут использовать этот тег для своей домашней страницы.

    4. Еженедельно: Страница обновляется примерно раз в неделю новым содержанием. Этот тег используется на страницах информации о продуктах с ежедневной информацией о ценах, небольших блогах и каталогах веб-сайтов.

    5. Ежемесячно: Страница обновляется примерно раз в месяц; может больше, может меньше. Страницы категорий, вечнозеленые руководства с обновленной информацией и ответы на часто задаваемые вопросы часто используют этот тег.

    6. Ежегодно: Страница обновляется редко, но может получать обновления один или два раза в год. В эту категорию попадают многие статические страницы, такие как страницы регистрации, страницы «О нас» и политики конфиденциальности.

    7. Никогда: Страница никогда не будет обновляться. К этой категории относятся старые записи в блогах, старые новости и полностью статические страницы.

    Атрибут, по сути, позволяет Google примерно знать, как часто им следует проверять ту или иную страницу, чтобы увидеть, есть ли изменения.

    Насколько мне известно, нет никаких штрафов за использование более частого тега, чем это необходимо для страниц вашего веб-сайта. Если вы сообщите Google, что ваша страница «О нас» меняется ежедневно, но изменяете ее только примерно раз в год, Google просто прекратит проверку, когда поймет, что содержание не менялось последние десять раз. Они также могут начать полностью игнорировать этот тег в вашей карте сайта.

    Для крупных изданий, таких как Forbes (упомянутый выше), почасовая оплата имеет больше смысла. Они хотят, чтобы последние новости появлялись быстро, а на их сайте ежечасно появлялось новое содержание.

    Установите для параметра Changefreq какое-нибудь реалистичное значение. Установка слишком высокого значения запутает поисковые системы и может привести к тому, что они будут искать ваш сайт слишком агрессивно, даже если нет никаких изменений. Если вы публикуете сообщение в блоге в неделю, то установка домашней страницы блога на еженедельную или ежедневную имеет смысл, но если вы установите ее на ежечасную работу, им придется проверять ваш блог 168 раз, прежде чем они увидят разницу в содержании вашей страницы.

    Правда об атрибутах Sitemap

    На самом деле вам не нужно использовать ни один из этих тегов. Возможно, вообще не стоит их использовать.

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

    Хотя это замечательная цель, она просто неэффективна по двум причинам.

    1. Первый: Google больше не нуждается в этой информации. Один из других атрибутов карты сайта — это отметка времени последнего обновления содержимого. Google ведет в своем индексе список ваших страниц, их содержание и время последнего индексации содержания. Если в последний раз они проиндексировали страницу до того, как в последний раз ваша карта сайта сообщает, что она была обновлена, они проверяют ее снова. Просто, легко и уже реализовано в каждой карте сайта.

    2. Второй: Google не нуждается в вашей помощи.Они даже сказали, что многим более мелким сайтам может вообще не понадобиться карта сайта. Согласно их разделу для разработчиков, вам может не понадобиться карта сайта, если:

    • Ваш сайт «маленький» . Под малым мы подразумеваем около 500 страниц или меньше на вашем сайте. (Только те страницы, которые, по вашему мнению, должны быть в результатах поиска, учитываются в этой сумме.)
    • Вы используете простую службу хостинга сайтов, такую ​​как Blogger или Wix . Если ваш сайт находится в службе, которая помогает вам быстро настроить сайт с предварительно отформатированными страницами и элементами навигации, ваша служба может автоматически создать карту сайта для вашего сайта, и вам не нужно ничего делать.Поищите в документации к вашей службе слово «карта сайта», чтобы узнать, создается ли карта сайта автоматически или рекомендуют создать свою собственную (и если да, то как отправить карту сайта в службу хостинга).
    • Ваш сайт имеет внутренние внутренние ссылки . Это означает, что Google может найти все важные страницы вашего сайта, перейдя по ссылкам, начиная с главной.
    • У вас не так много мультимедийных файлов (видео, изображения) или страниц новостей, которые должны отображаться в индексе .Файлы Sitemap могут помочь Google найти и понять файлы видео и изображений или новостные статьи на вашем сайте, если вы хотите, чтобы они отображались в результатах поиска Google. Если вам не нужно, чтобы эти результаты отображались в результатах поиска изображений, видео или новостей, возможно, вам не понадобится карта сайта ».

    Конечно, нет причин, по которым или должны иметь карту сайта. Он помогает Google находить страницы, которые могли проскользнуть сквозь трещины, и абсолютно не причинит вам вреда, если вы не попытаетесь проделать с ним какие-то махинации.

    Интересно, что я собирался перечислить еще одну причину. Судя по тому, что я слышал и во что верил, Google больше не нужно использовать Googlebot для индексации Интернета; у них есть Chrome, и они могут просто получать измененные данные от пользователей, которые просматривают их. Рэнд Фишкин провел опрос о том, верили ли люди в это в 2017 году:

    По вашему мнению, использует ли поисковая система Google данные Chrome для обнаружения и сканирования веб-страниц?

    — Рэнд Фишкин (@randfish) 11 марта 2017 г.

    Но, как оказалось, это не совсем так.Я знаю — я шокирован не меньше вас. Я предполагаю, что Google Panopticon будет использовать все возможные источники данных для всего, что может, тем более что они удалили со своего сайта слоган «не будь злом». И все же во время тестового запуска Perficient, который отправлял пользователей на страницу, на которой не было ссылок, не было в карте сайта и никаких других соединений, кроме приходящих пользователей, тесты не запускали индексацию. Google не знал о страницах даже после того, как их посетили 27 пользователей.

    Теперь возможно, что Google изменился и теперь использует эти данные (поскольку этот тест проводился в 2017 году), и возможно, что Google не индексирует новые страницы, но может их обнаружить или может использовать данные от пользователей. для выявления изменений на странице, которая уже была проиндексирована.Также возможно, что количество посетителей было слишком маленьким, чтобы Google волновался; только 27 посетителей в пике, и тогда ничего не очень привлекательного. Ни один из них не был протестирован. Если кто-то хочет их протестировать (или поработать со мной, чтобы проверить их), не стесняйтесь написать мне!

    По правде говоря, все это косвенно, но это нормально. У нас также есть прямое сообщение по этому поводу от Джона Мюллера из Google.

    Еще в 2015 году во время одной из регулярных видеовстреч Джону задали вопрос.

    «Имеет ли значение приоритет и частота в карте сайта? Если нет, как мы можем сказать Google, что нужно сканировать определенные страницы ежедневно или с высоким приоритетом? »

    Он ответил и резюмировал это, объяснив, как Google больше не обращает внимания на эти атрибуты.

    «Приоритет и частота изменений больше не играют большой роли в файлах Sitemap.

    Это то, где мы пробовали разные вещи, но по сути, если у вас есть файл карты сайта и вы используете его, чтобы сообщить нам о страницах, которые были изменены или обновлены, гораздо лучше просто указать метку времени напрямую, чтобы мы можем заглянуть в наши внутренние системы и сказать, что мы не сканировали с этой даты, поэтому мы должны сканировать снова.

    И просто ежедневное сканирование не имеет особого смысла, если ваш контент не меняется. Это то, где мы видим много сайтов, которые предоставляют нам эту информацию в карте сайта, они сказали, что она меняется ежедневно или еженедельно, и мы смотрим в нашу базу данных, и она не изменилась за месяц или годы …

    Так что я бы порекомендовал использовать метку времени ».

    Другими словами, эти атрибуты увеличивают нагрузку на веб-мастеров по необходимости указывать атрибут или пару атрибутов для каждой страницы (не меньше, чем вручную), что всегда плохо.Их легко сфальсифицировать, зря тратя время Google, пока они не научатся лучше. И метод временной метки просто более эффективен и проще.

    Подведение итогов

    Итак, вот и все: правда об атрибутах Priority и Changefreq для карт сайта. Они существуют, и вы можете использовать их, если хотите, но они не так важны, как вы думаете. Нет причин стараться изо всех сил их использовать. Нет причин стараться изо всех сил удалять их, если они добавляются в вашу карту сайта автоматически.

    Google — не единственная поисковая система, которая проверяет вашу карту сайта, поэтому, если у вас слишком высокие значения Changefreq, у вас могут быть десятки поисковых систем, которые будут работать с вашим сервером и замедлять его. Это все еще то, что вам следует настроить, но это не повлияет на ваш сайт.

    Единственное, на что я хотел бы обратить внимание, это проверить, чтобы в записях вашей карты сайта не было повторяющихся атрибутов. Если, например, у вас есть два экземпляра Priority для каждой записи, у вас будет ошибка при синтаксическом анализе карты сайта в Search Console.Эти ошибки могут повредить вашей индексации, поэтому лучше вообще избежать проблемы.

    Как вы думаете? Каков ваш опыт игры с этими ценностями? Есть какие-нибудь интересные открытия, которыми вы хотели бы поделиться с нами? Дайте нам знать в разделе комментариев ниже — мы отвечаем на все комментарии и ждем от вас ответа!

    Фреймворк карты сайта | Документация Django

    Django поставляется с высокоуровневым фреймворком для создания карты сайта. XML-файлы.

    Обзор¶

    Карта сайта — это файл XML на вашем веб-сайте, который сообщает индексаторам поисковых систем, как часто ваши страницы меняются и насколько «важны» определенные страницы в отношении на другие страницы вашего сайта. Эта информация помогает поисковым системам индексировать ваш сайт.

    Инфраструктура карты сайта Django автоматизирует создание этого XML-файла, позволяя вы выражаете эту информацию в коде Python.

    Он работает очень похоже на структуру синдикации Django. Чтобы создать карту сайта, напишите Sitemap class и укажите на него в своем URLconf.

    Установка¶

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

    1. Добавьте 'django.contrib.sitemaps' к настройке INSTALLED_APPS .
    2. Убедитесь, что ваш параметр TEMPLATES содержит DjangoTemplates бэкэнд, чьи параметры APP_DIRS установлены на True . Это там по умолчанию, поэтому вам нужно будет изменить это только в том случае, если вы изменили эту настройку.
    3. Убедитесь, что вы установили фреймворк сайтов .

    (Примечание. Приложение карты сайта не устанавливает никаких таблиц базы данных. Единственное причина, по которой он должен перейти в INSTALLED_APPS , заключается в том, что Погрузчик () шаблон загрузчик может найти шаблоны по умолчанию.)

    Инициализация¶

    просмотров. карта сайта ( запрос , карты сайта , раздел = Нет , template_name = ‘sitemap.xml’ , content_type = ‘application / xml’ ) ¶

    Чтобы активировать создание карты сайта на своем сайте Django, добавьте эту строку в свой URLconf:

     из django.contrib.sitemaps.views импортировать карту сайта
    
    путь ('sitemap.xml', карта сайта, {'карты сайта': карты сайта},
         name = 'django.contrib.sitemaps.views.sitemap')
     

    Это указывает Django создать карту сайта, когда клиент обращается к /sitemap.xml .

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

    Представление карты сайта принимает дополнительный обязательный аргумент: {'sitemaps': sitemaps} . карты сайта должен быть словарем, отображающим короткую метку раздела (например, blog или news ) в свой Sitemap class (например, BlogSitemap или NewsSitemap ). Он также может отображаться на экземпляр из Sitemap класс (e.грамм., BlogSitemap (some_var) ).

    Карта сайта классы¶

    Файл Sitemap Класс — это класс Python, который представляет собой «раздел» записей в вашей карте сайта. Например, один Sitemap Класс может представлять все записи вашего блога, а другой может представлять все события в ваших мероприятиях календарь.

    В простейшем случае все эти секции объединяются в одну sitemap.xml , но также можно использовать фреймворк для создания индекс карты сайта, который ссылается на отдельные файлы карты сайта, по одному на раздел.(Видеть Создание индекса карты сайта ниже.)

    Карта сайта классы должны быть подклассами django.contrib.sitemaps.Sitemap . Они могут жить где угодно в вашей кодовой базе.

    Пример¶

    Предположим, у вас есть система блогов с моделью Entry , и вы хотите, чтобы карта сайта, чтобы включить все ссылки на ваши отдельные записи в блоге. Вот как ваш класс карты сайта может выглядеть:

     из django.contrib.sitemaps import Sitemap
    из blog.models import Entry
    
    класс BlogSitemap (карта сайта):
        changefreq = "никогда"
        приоритет = 0.5
    
        def items (self):
            вернуть Entry.objects.filter (is_draft = False)
    
        def lastmod (self, obj):
            вернуть obj.pub_date
     

    Примечание:

    • changefreq и priority являются классами атрибуты, соответствующие элементам и , соответственно. Их можно сделать вызываемыми как функции, как lastmod был в примере.
    • items () — это метод, который возвращает последовательность или QuerySet объектов.Возвращенные объекты будут переданы любому вызываемому методы, соответствующие свойству карты сайта ( расположение , lastmod , changefreq и приоритет ).
    • lastmod должен вернуть datetime .
    • В этом примере нет метода определения местоположения , но вы может предоставить его, чтобы указать URL-адрес вашего объекта. По умолчанию, location () вызывает get_absolute_url () для каждого объекта и возвращает результат.

    Карта сайта ссылка на класс¶
    класс Карта сайта

    Класс Sitemap может определять следующие методы / атрибуты:

    позиции

    Обязательно. Метод, возвращающий последовательность или QuerySet объектов. Фреймворку все равно, что это за тип объектов; все, что имеет значение, это то, что эти объекты передаются в расположение () , lastmod () , changefreq () и priority () методы.

    расположение

    Необязательно. Либо метод, либо атрибут.

    Если это метод, он должен возвращать абсолютный путь для данного объекта. как возвращено items () .

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

    В обоих случаях «абсолютный путь» означает URL, который не включает протокол или домен.Примеры:

    • Хорошо: '/ foo / bar /'
    • Плохо: 'example.com/foo/bar/'
    • Плохо: 'https://example.com/foo/bar/'

    Если местоположение не указано, структура вызовет метод get_absolute_url () для каждого объекта, возвращенный шт. () .

    Чтобы указать протокол, отличный от 'http' , используйте протокол .

    lastmod

    Необязательно. Либо метод, либо атрибут.

    Если это метод, он должен принимать один аргумент — возвращаемый объект. на items () — и вернуть последний измененный объект дата / время как datetime .

    Если это атрибут, его значение должно быть datetime представляет дату / время последнего изменения для каждого объекта , возвращаемого шт. () .

    Если все элементы в карте сайта имеют lastmod , карта сайта сгенерировано просмотрами.sitemap () будет иметь Last-Modified заголовок равен последнему lastmod . Вы можете активировать ConditionalGetMiddleware сделать Django соответствующим образом отвечает на запросы с помощью If-Modified-Since заголовок, который предотвратит отправку карты сайта, если она не изменилась.

    пагинатор

    Необязательно.

    Это свойство возвращает Paginator для шт. () .Если вы создаете карты сайта в пакетном режиме, вы можете хотите переопределить это как кешированное свойство, чтобы избежать множественных шт. () звонка.

    частота смены

    Необязательно. Либо метод, либо атрибут.

    Если это метод, он должен принимать один аргумент — возвращаемый объект. на items () — и вернуть изменение этого объекта частота в виде строки.

    Если это атрибут, его значение должно быть строкой, представляющей изменить частоту каждый объект , возвращаемый функцией items () .

    Возможные значения для changefreq , независимо от того, используете ли вы метод или атрибут:

    • 'всегда'
    • «почасово»
    • «ежедневно»
    • «еженедельно»
    • «ежемесячно»
    • «годовой»
    • «никогда»
    приоритет

    Необязательно. Либо метод, либо атрибут.

    Если это метод, он должен принимать один аргумент — возвращаемый объект. на items () — и вернуть приоритет этого объекта как либо строка, либо число с плавающей запятой.

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

    Примеры значений для приоритета : 0,4 , 1,0 . В приоритет страницы по умолчанию — 0,5 . Смотрите карты сайта.org документация для получения дополнительной информации.

    протокол

    Необязательно.

    Этот атрибут определяет протокол ( 'http' или 'https' ) URL-адреса в карте сайта. Если он не установлен, протокол, по которому карта сайта была запрошена. Если карта сайта построена за пределами контекст запроса, по умолчанию — 'http' .

    лимит

    Необязательно.

    Этот атрибут определяет максимальное количество URL-адресов, включенных на каждую страницу. карты сайта. Его значение не должно превышать значение по умолчанию 50000 , что является верхним пределом, разрешенным в протоколе Sitemap.

    i18n

    Необязательно.

    Логический атрибут, определяющий, должны ли URL-адреса этой карты сайта быть сгенерирован с использованием всех ваших ЯЗЫКОВ . По умолчанию Неверно .

    языка

    Новое в Django 3.2.

    Необязательно.

    Последовательность кодов языков для использования создание альтернативных ссылок, когда включен i18n . По умолчанию ЯЗЫКИ .

    альтернативно

    Новое в Django 3.2.

    Необязательно.

    Логический атрибут. При использовании вместе с i18n сгенерированные URL-адреса будут иметь список альтернативных ссылки, указывающие на другие языковые версии с помощью hreflang атрибут.По умолчанию Ложь .

    x_default

    Новое в Django 3.2.

    Необязательно.

    Логический атрибут. Когда True , альтернативные ссылки, сгенерированные Альтернативы будут содержать hreflang = "x-default" резервная запись со значением LANGUAGE_CODE . По умолчанию Неверно .

    Ярлыки¶

    Фреймворк карты сайта предоставляет удобный класс для общего случая:

    class GenericSitemap ( info_dict , priority = None , changefreq = None , protocol = None ) ¶

    Файл django.contrib.sitemaps.GenericSitemap класс позволяет создать карту сайта, передав ей словарь, который должен содержать как минимум запись queryset . Этот набор запросов будет использоваться для создания элементов карты сайта. Он также может иметь запись date_field , которая задает поле даты для объектов, полученных из набора запросов . Это будет использоваться для атрибута lastmod в сгенерированная карта сайта.

    Приоритет , частота смены , и аргументы ключевого слова протокола позволяют указать эти атрибуты для всех URL-адресов.

    Пример

    Вот пример URLconf, использующего GenericSitemap :

     из django.contrib.sitemaps import GenericSitemap
    из django.contrib.sitemaps.views импортировать карту сайта
    из пути импорта django.urls
    из blog.models import Entry
    
    info_dict = {
        'queryset': Entry.objects.all (),
        'date_field': 'pub_date',
    }
    
    urlpatterns = [
        # какое-то общее представление с использованием info_dict
        # ...
    
        # карта сайта
        путь ('sitemap.xml', карта сайта,
             {'sitemaps': {'blog': GenericSitemap (info_dict, priority = 0.6)}},
             name = 'django.contrib.sitemaps.views.sitemap'),
    ]
     

    Карта сайта для статических представлений¶

    Часто требуется, чтобы сканеры поисковых систем индексировали просмотры, которые не являются страницы с подробными сведениями об объектах или плоские страницы. Решение состоит в том, чтобы явно указать URL имена для этих представлений в элементах и вызов reverse () в метод location карты сайта. Например:

     # sitemaps.py
    из django.contrib импортировать карты сайта
    из django.urls импортировать обратный
    
    класс StaticViewSitemap (карты сайта.Карта сайта):
        приоритет = 0,5
        changefreq = 'ежедневно'
    
        def items (self):
            return ['main', 'about', 'license']
    
        местоположение по умолчанию (self, item):
            возврат назад (шт.)
    
    # urls.py
    из django.contrib.sitemaps.views импортировать карту сайта
    из пути импорта django.urls
    
    из .sitemaps импортировать StaticViewSitemap
    из . импорт просмотров
    
    sitemaps = {
        'static': StaticViewSitemap,
    }
    
    urlpatterns = [
        путь ('', views.main, name = 'main'),
        путь ('about /', views.about, name = 'about'),
        путь ('лицензия /', просмотры.лицензия, имя = 'лицензия'),
        # ...
        путь ('sitemap.xml', карта сайта, {'карты сайта': карты сайта},
             name = 'django.contrib.sitemaps.views.sitemap')
    ]
     

    Создание индекса карты сайта¶

    просмотров. index ( запрос , карты сайта , template_name = ‘sitemap_index.xml’ , content_type = ‘application / xml’ , sitemap_url_name = ‘django.contrib.sitemaps.views.sitemap’ ) ¶

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

    Вот как будут выглядеть соответствующие строки URLconf для приведенного выше примера:

     из представлений импорта django.contrib.sitemaps
    
    urlpatterns = [
        путь ('sitemap.xml', views.index, {'sitemaps': sitemaps}),
        путь ('sitemap- <раздел> .xml', views.sitemap, {'sitemaps': sitemaps},
             name = 'django.contrib.sitemaps.views.sitemap'),
    ]
     

    Это автоматически создаст файл sitemap.xml , который ссылается на обе карты сайта-плоские страницы.xml и sitemap-blog.xml . В Карта сайта классов и карта сайта dict вообще не меняется.

    Вам следует создать индексный файл, если на одной из ваших карт сайта более 50 000 URL-адреса. В этом случае Django автоматически разбивает карту сайта на страницы, а индекс будет отражать это.

    Если вы не используете обычное представление карты сайта — например, если оно упаковано с кеширующим декоратором — вы должны назвать свое представление карты сайта и передать sitemap_url_name в индексное представление:

     из django.contrib.sitemaps импортирует просмотры как sitemaps_views
    из django.views.decorators.cache import cache_page
    
    urlpatterns = [
        путь ('sitemap.xml',
             cache_page (86400) (sitemaps_views.index),
             {'sitemaps': карты сайта, 'sitemap_url_name': 'sitemaps'}),
        путь ('карта сайта- <раздел> .xml',
             cache_page (86400) (sitemaps_views.sitemap),
             {'sitemaps': sitemaps}, name = 'sitemaps'),
    ]
     

    Настройка шаблона¶

    Если вы хотите использовать разные шаблоны для каждой карты сайта или индекса карты сайта доступный на вашем сайте, вы можете указать его, передав template_name параметр для карты сайта и , индексирует просмотров через URLconf:

     из django.contrib.sitemaps импорт представлений
    
    urlpatterns = [
        путь ('custom-sitemap.xml', views.index, {
            "карты сайта": карты сайта,
            'имя_шаблона': 'custom_sitemap.html'
        }),
        путь ('custom-sitemap- <раздел> .xml', views.sitemap, {
            "карты сайта": карты сайта,
            'имя_шаблона': 'custom_sitemap.html'
        }, name = 'django.contrib.sitemaps.views.sitemap'),
    ]
     

    Эти представления возвращают TemplateResponse экземпляры, которые позволяют легко настроить данные ответа перед рендеринг.Дополнительные сведения см. В документации TemplateResponse.

    Переменные контекста¶

    При настройке шаблонов для Индекс () и sitemap () просмотров, вы можете положиться на следующие переменные контекста.

    Индекс

    Переменная карты сайта — это список абсолютных URL-адресов для каждой карты сайта.

    Карта сайта¶

    Переменная urlset — это список URL-адресов, которые должны отображаться в карта сайта.Каждый URL-адрес предоставляет атрибуты, как определено в Карта сайта класс:

    • альтернативные
    • частота смены
    • товар
    • последний мод
    • расположение
    • приоритет

    Атрибут альтернативы доступен, когда i18n и альтернативы включены. Это список на другом языке версии, включая дополнительный резервный вариант x_default для каждого URL.Каждая альтернатива — это словарь с ключами location и lang_code .

    Изменено в Django 3.2:

    Добавлен атрибут alternates .

    Атрибут элемента был добавлен для каждого URL-адреса, чтобы обеспечить более гибкую настройка шаблонов, таких как карты сайта новостей Google. Предполагая элемента Sitemap () вернет список элементов с Public_data и поле tags что-то вроде этого создать карту сайта, совместимую с Новостями Google:

     
    
    {% spaceless%}
    {% для URL в наборе URL%}
      
         {{url.location}} 
        {% if url.lastmod%}  {{url.lastmod | date: "Y-m-d"}}  {% endif%}
        {% if url.changefreq%}  {{url.changefreq}}  {% endif%}
        {% if url.priority%}  {{url.priority}}  {% endif%}
        <новости: новости>
          {% если url.item.publication_date%}  {{url.item.publication_date | date: "Y-m-d"}}  {% endif%}
          {% if url.item.tags%}  {{url.item.tags}}  {% endif%}
        
       
    {% endfor%}
    {% endpaceless%}
    
     

    Pinging Google¶

    Вы можете захотеть «пинговать» Google, когда ваша карта сайта изменится, чтобы сообщить ему переиндексируйте ваш сайт. Фреймворк Sitemaps предоставляет функцию, позволяющую только что: django.contrib.sitemaps.ping_google () .

    ping_google ( sitemap_url = None , ping_url = PING_URL , sitemap_uses_https = True )

    ping_google принимает следующие необязательные аргументы:

    • sitemap_url — Абсолютный путь к карте сайта вашего сайта (например, '/sitemap.xml' ). Если этот аргумент не указан, ping_google попытается выяснить вашу карту сайта, выполнив обратный поиск в ваш URLconf.
    • ping_url — По умолчанию Google’s Ping Tool: https://www.google.com/webmasters/tools/ping.
    • sitemap_uses_https — Установите Ложь , если ваш сайт использует http а не https .

    ping_google () вызывает исключение django.contrib.sitemaps.SitemapNotFound , если он не может определить ваш URL-адрес карты сайта.

    Один из полезных способов вызова ping_google () — это save () модели. метод:

     из django.contrib.sitemaps import ping_google
    
    класс Entry (models.Model):
        # ...
        def save (self, force_insert = False, force_update = False):
            super (). сохранить (force_insert, force_update)
            пытаться:
                ping_google ()
            кроме исключения:
                # Без "кроме", потому что мы могли бы получить разнообразие
                # исключений, связанных с HTTP.
                проходить
     

    Однако более эффективным решением было бы вызвать ping_google () из cron или другое запланированное задание.Функция делает HTTP-запрос к серверам Google, поэтому вы можете не захотеть вводить эти сетевые накладные расходы каждый раз, когда вы звоните save () .

    Пинг в Google через

    manage.py
    django-admin ping_google [sitemap_url]

    После того, как приложение Sitemap добавлено в ваш проект, вы также можете ping Google с помощью команды управления ping_google :

     python manage.py ping_google [/ sitemap.xml]
     
    --sitemap-uses-http

    Используйте эту опцию, если ваша карта сайта использует http , а не https .

    XML Sitemap: полное справочное руководство

    XML Sitemap вкратце

    XML-карта сайта — это специальный документ, в котором перечислены все страницы веб-сайта, чтобы предоставить поисковым системам обзор всего доступного контента.

    Настоятельно рекомендуется реализовать XML-карту сайта, особенно на крупных веб-сайтах (500+ страниц).

    При внедрении XML Sitemap придерживайтесь следующих рекомендаций:

    • Поддерживайте XML-карту сайта в актуальном состоянии с учетом содержания вашего веб-сайта.
    • Убедитесь, что он чистый: должны быть включены только индексируемые страницы.
    • Ссылка на XML-файл Sitemap из файла robots.txt.
    • Не указывайте более 50 000 URL-адресов в одном XML-файле Sitemap.
    • Убедитесь, что размер (несжатого) файла не превышает 50 МБ.
    • Не зацикливайтесь на свойствах lastmod, priority и changefreq.

    Что такое XML-карта сайта?

    XML-карта сайта — это специальный документ, в котором перечислены все страницы веб-сайта, предназначенный для поисковых систем. Сравните это с телефонной книгой: она сообщает поисковой системе, какой контент доступен и как до него добраться. Кроме того, может быть предоставлена ​​некоторая дополнительная информация, например, когда контент был обновлен в последний раз и какова относительная важность контента.

    Файлы Sitemap

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

    Что важно отметить, так это различие между XML-картами сайта и «обычными» картами сайта (также называемыми «HTML-картами сайта»). Эти карты сайта предназначены для посетителей , которые могут найти контент на вашем веб-сайте, в то время как карты сайта в формате XML предназначены для поисковых систем .

    Зачем вам нужен XML Sitemap?

    XML Sitemaps помогает поисковым системам оценивать содержание вашего веб-сайта и является механизмом для уведомления их о новом или обновленном содержании.Поэтому рекомендуется внедрять их, когда это возможно. И особенно для крупных веб-сайтов (500+ страниц) они становятся незаменимыми.

    Как выглядит XML-карта сайта?

    XML-карта сайта предназначена для поисковых систем, поэтому они отформатированы на языке, который легко понять для компьютеров: XML. К счастью, XML также вполне читаем для людей, поэтому давайте рассмотрим пример:

      
    
    
     https://www.contentkingapp.com/ 
     2017-06-14T19: 55: 25 + 02: 00 
    
    
     https://www.contentkingapp.com/blog/ 
     2016-06-24T10: 23: 20 + 02: 00 
    
      

    Теперь, чтобы понять, что происходит, давайте разберем отдельные части!

    Не пропустите органический трафик

    Помогите поисковым системам найти и проиндексировать ваш новый контент.Быстро проверьте, действительна ли ваша XML-карта сайта с ContentKing.

    Заголовок XML

    Этот заголовок означает, что содержимое структурировано в соответствии с версией 1.0 стандарта XML и описывает кодировку символов. Он в основном сообщает поисковым системам, что они могут ожидать от файла.

    Определение набора URL

    Это определение набора URL-адресов инкапсулирует все URL-адреса, содержащиеся в карте сайта, и описывает, какая версия стандарта XML Sitemap используется. Обратите внимание, что urlset закрывается в нижней части документа:

    Определение отдельных URL-адресов

      
     https://www.contentkingapp.com/ 
     2017-06-14T19: 55: 25 + 02: 00 
      

    Наконец, мы подошли к самой важной части: определению индивидуальных URL с помощью тега url .Каждое определение URL-адреса должно содержать как минимум тег loc (сокращение от location ). Значением этого тега должен быть полный URL-адрес страницы, включая протокол (например, «http: //» ).

    Кроме того, каждое определение URL-адреса может содержать следующие необязательные свойства:

    • lastmod : дата последнего изменения содержимого этого URL-адреса. Дата в формате «W3C datetime (открывается в новой вкладке)».
    • приоритет : приоритет URL-адреса относительно вашего собственного веб-сайта по шкале от 0.0 и 1.0.
    • changefreq : как часто ожидается изменение содержимого URL-адреса. Возможные значения: всегда, ежечасно, ежедневно, еженедельно, ежемесячно, рано и никогда.

    Где мне разместить мой XML-файл Sitemap?

    Как и страницы вашего веб-сайта, XML-карта сайта находится на собственном URL-адресе. Обычно URL-адрес XML-файла Sitemap — / sitemap.xml , и рекомендуется следовать этому соглашению, чтобы поисковые системы могли его легко обнаружить.

    Однако, если по какой-либо причине это невозможно, вы можете выбрать другое местоположение или другое имя файла, если вы ссылаетесь на него в своем файле robots.txt через директиву Sitemap:

      Карта сайта: http://www.example.com/alternativelocation/alternativefilename.xml  

    Существуют ли какие-либо ограничения для файлов Sitemap в формате XML?

    XML-файлы Sitemap имеют несколько ограничений, о которых следует помнить:

    • Они не должны содержать более 50 000 URL.
    • Размер их файла без сжатия ограничен 50 МБ.

    Если ваш XML-файл Sitemap превышает эти ограничения, вам необходимо разделить их по нескольким XML-файлам Sitemap и использовать XML-индекс Sitemap.

    Что такое XML-индекс карты сайта?

    Всякий раз, когда вы пересекаете ограничения для одного XML-файла Sitemap, вам необходимо разделить их на отдельные XML-карты сайта и связать их вместе с XML-индексом Sitemap. Этот индекс представляет собой отдельный XML-файл, который ссылается на различные XML-файлы Sitemap.

    Давайте посмотрим на пример:

      
    
    <карта сайта>
     http: // www.example.com/sitemap1.xml.gz 
     2004-10-01T18: 23: 17 + 00: 00 
    
    <карта сайта>
     http://www.example.com/sitemap2.xml.gz 
     1 января 2005 г. 
    
      

    Этот индекс XML-файла Sitemap ссылается на два XML-файла Sitemap: sitemap1.xml.gz и sitemap2.xml.gz . Давайте проанализируем и этот файл!

    Заголовок XML

    Здесь нет ничего нового, как и в случае с файлом XML Sitemap, мы сначала определяем, что файл находится в формате XML и какая кодировка символов используется.

    Определение индекса Sitemap

    Теперь вместо определения urlset мы видим определение sitemapindex . Это определение инкапсулирует все карты сайта, содержащиеся в индексе карты сайта, и опять же, какая версия стандарта XML Sitemap используется.Так же, как определение urlset , определение sitemapindex закрыто в нижней части документа:

    Определение отдельных карт сайта

      <карта сайта>
     http://www.example.com/sitemap1.xml.gz 
     2004-10-01T18: 23: 17 + 00: 00 
      

    А затем перейдем к сути: собственно определение отдельных карт сайта.Как и в случае с URL-адресами, каждое определение карты сайта должно содержать по крайней мере тег loc , содержащий полный URL-адрес отдельного XML-файла Sitemap.

    Вдобавок к этому определение карты сайта может дополнительно содержать определение lastmod. Дата последнего обновления указанной XML-карты сайта. Снова в формате «W3C datetime (открывается в новой вкладке)».

    Где мне разместить свой XML-индекс Sitemap?

    Подобно XML-файлам Sitemap, существует соглашение о расположении и имени файла XML-индекса Sitemap: / sitemap_index.xml . Но, опять же, вы можете отклониться от этого, если вы укажете это в своем файле robots.txt:

      Карта сайта: http://www.example.com/alternativelocation/alternativefilename.xml  

    Устранение проблем с SEO до того, как это сделает Google

    Проверяйте свою карту сайта XML с помощью ContentKing. Круглосуточный мониторинг, который даст вам самую свежую информацию о том, что можно улучшить.

    Лучшие практики для XML Sitemap

    При внедрении файлов Sitemap XML важно следовать этим передовым методам.

    Поддерживайте актуальность XML-файла Sitemap

    Убедитесь, что ваш XML-файл Sitemap предоставляет актуальное изображение вашего веб-сайта. Всякий раз, когда страница удаляется, она также должна быть исключена из вашего XML-файла Sitemap. Если вы используете дополнительный тег lastmod , обязательно обновляйте метку времени при каждом изменении страницы.

    Наконечник Pro

    Проблема «Проиндексировано, не отправлено в карту сайта» в отчете об индексировании в Google Search Console очень полезна для проверки того, включает ли ваша XML-карта сайта все ваши индексируемые страницы.

    Включайте только индексируемые страницы в XML-файл Sitemap

    Ваш XML-файл Sitemap должен описывать только индексируемые страницы. Это означает, что вы должны исключить все URL-адреса, указывающие на перенаправления (например, код состояния 301) и отсутствующие страницы (например, код состояния 404).

    Кроме того, эти страницы должны быть индексируемыми, что означает, что они доступны для поисковых систем (без исключения в robots.txt), и отсутствуют директивы, запрещающие поисковым системам индексировать страницу (например, мета-роботы, канонические ссылки или x-роботы -ярлык).

    Часто задаваемые вопросы

    Узнайте, что означают эти проблемы, в отчете GSC об индексном покрытии:

    Придерживайтесь расположения по умолчанию и имени файла

    По возможности придерживайтесь расположения и имени файла по умолчанию для XML-файла Sitemap ( /sitemap.xml ) и XML-индекса Sitemap ( /sitemap_index.xml ). Это упрощает поисковым системам их поиск.

    Ссылка на XML-файл Sitemap в файле robots.txt

    Если вы отклоняетесь от соглашения об URL-адресе вашего XML-файла Sitemap или XML-индекса Sitemap, вы должны ссылаться на него в своем файле robots.txt файл. Однако, даже если вы придерживаетесь стандартного URL-адреса, рекомендуется включить ссылку на него в свой robots.txt, чтобы обеспечить возможность обнаружения поисковыми системами.

    Не зацикливайтесь на lastmod, priority и changefreq

    Хотя для каждого URL-адреса вы можете определить свойства lastmod, priority и changefreq, это полностью необязательно. Их определение не повредит, и может быть небольшая вероятность того, что поисковые системы будут использовать эту информацию, но обычно понимается, что поисковые системы не обращают на них (много) внимания (открывается в новой вкладке).

    Соблюдайте ограничения для файлов Sitemap в формате XML

    Убедитесь, что ваши XML-файлы Sitemap не содержат более 50 000 URL, а размер несжатого файла ограничен 50 МБ. Каждый раз, когда вы превышаете любой из ограничений, вы должны разделить XML-карту сайта и использовать XML-индекс карты сайта.

    Часто задаваемые вопросы о XML Sitemap

    1. Что означает расширение .gz?

    1. Что означает расширение .gz?

    Расширение .gz добавляется к имени файла при сжатии XML Sitemap (посредством сжатия gzip).XML-файлы Sitemap, содержащие много URL-адресов, обычно увеличиваются до значительных размеров файлов, и за счет использования сжатия можно уменьшить влияние этого на дисковое хранилище и время передачи по сети.

    Как оптимизировать XML-карты сайта: 13 лучших практик SEO

    Создание и обновление вашей XML-карты сайта — важная, но игнорируемая практика SEO.

    Карты сайта важны для ваших сайтов и поисковых систем.

    Для поисковых систем карты сайта — это простой и понятный способ получить информацию о структуре и страницах вашего веб-сайта.

    XML-карты сайта также предоставляют некоторые важные метаданные, например:

    • Как часто обновляется каждая страница.
    • Когда они в последний раз менялись.
    • Насколько важны страницы по отношению друг к другу.

    Однако есть определенные передовые методы использования карты сайта с максимальной выгодой.

    Готовы узнать, как оптимизировать карты сайта XML?

    Ниже приведены 13 лучших практик, позволяющих получить максимальную отдачу от SEO.

    1.Используйте инструменты и плагины для автоматического создания карты сайта

    Создать карту сайта легко, если у вас есть подходящие инструменты, такие как программное обеспечение для аудита со встроенным генератором XML Sitemap или популярные плагины, такие как Google XML Sitemaps.

    Фактически, веб-сайты WordPress, которые уже используют Yoast SEO, могут включать файлы Sitemap XML прямо в плагине.

    Реклама

    Продолжить чтение ниже

    В качестве альтернативы вы можете вручную создать карту сайта, следуя структуре кода карты сайта XML.

    Технически, ваша карта сайта даже не обязательно должна быть в формате XML — достаточно текстового файла с новой строкой, разделяющей каждый URL.

    Однако вам нужно будет сгенерировать полную карту сайта XML, если вы хотите реализовать атрибут hreflang, поэтому гораздо проще просто позволить инструменту делать всю работу за вас.

    Посетите официальные страницы Google и Bing для получения дополнительной информации о том, как вручную настроить карту сайта.

    2. Отправьте карту сайта в Google

    Вы можете отправить карту сайта в Google из консоли поиска Google.

    На панели управления нажмите Сканирование> Файлы Sitemap> Добавить тестовый файл Sitemap .

    Проверьте свою карту сайта и просмотрите результаты, прежде чем нажать Отправить карту сайта , чтобы проверить наличие ошибок, которые могут помешать индексированию ключевых целевых страниц.

    В идеале вы хотите, чтобы количество проиндексированных страниц было таким же, как и количество отправленных страниц.

    Обратите внимание, что отправка карты сайта сообщает Google, какие страницы вы считаете высококачественными и достойными индексации, но не гарантирует , что они будут проиндексированы.

    Реклама

    Продолжить чтение ниже

    Вместо этого вы можете отправить карту сайта по адресу:

    • Помогите Google понять, как устроен ваш веб-сайт.
    • Найдите ошибки, которые можно исправить, чтобы обеспечить правильную индексацию страниц.

    3. Расставьте приоритеты в своей карте сайта для высококачественных страниц

    Когда дело доходит до ранжирования, общее качество сайта является ключевым фактором.

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

    Вместо этого попробуйте направить ботов на самые важные страницы вашего сайта.

    В идеале это страницы:

    • Высоко оптимизированные.
    • Включите изображения и видео.
    • Есть много уникального контента.
    • Оперативное вовлечение пользователей с помощью комментариев и обзоров.

    4. Изолировать проблемы индексации

    Консоль поиска Google может немного расстраивать, если она не индексирует все ваши страницы, потому что не сообщает, какие страницы проблемные.

    Например, если вы отправляете 20 000 страниц и только 15 000 из них проиндексированы, вам не сообщат, что такое 5 000 «проблемных страниц».

    Это особенно актуально для крупных веб-сайтов электронной коммерции, на которых есть несколько страниц с очень похожими товарами.

    SEO-консультант Майкл Коттам написал полезное руководство по выявлению проблемных страниц.

    Он рекомендует разбивать страницы продуктов на разные карты сайта XML и тестировать каждую из них.

    Создайте карты сайта, которые подтвердят гипотезы, например, «страницы, на которых нет изображений продуктов, не индексируются» или «страницы без уникальной копии не индексируются.»

    Когда вы изолировали основные проблемы, вы можете либо поработать над их устранением, либо установить для этих страниц значение« noindex », чтобы они не ухудшали качество вашего сайта в целом.

    В 2018 году Google Search Console была обновлена ​​с точки зрения индексации.

    Реклама

    Продолжить чтение Ниже

    В частности, теперь перечислены проблемные страницы и указаны причины, по которым Google не индексирует некоторые URL-адреса.

    5. Включите в файл Sitemap только канонические версии URL-адресов

    Если у вас несколько страниц, которые очень похожи, например, страницы продуктов одного и того же продукта разных цветов, вы должны использовать тег «link rel = canonical», чтобы указать Google, какая страница является «главной» страницей, которую нужно сканировать и проиндексировать.

    Ботам будет легче обнаруживать ключевые страницы, если вы не добавляете страницы с каноническими URL-адресами, указывающими на другие страницы.

    6. По возможности используйте метатег роботов поверх robots.txt

    Если вы не хотите, чтобы страница индексировалась, вы обычно хотите использовать метатег роботов «noindex, follow».

    Это не позволяет Google проиндексировать страницу, но сохраняет ваши ссылки и особенно полезно для служебных страниц, которые важны для вашего сайта, но не должны отображаться в результатах поиска.

    Единственный случай, когда вы хотите использовать robots.txt для блокировки страниц, — это когда вы съедаете свой краулинговый бюджет.

    Реклама

    Продолжить чтение ниже

    Если вы заметили, что Google повторно сканирует и индексирует относительно неважные страницы (например, отдельные страницы продуктов) за счет основных страниц, вы можете использовать robots.txt.

    7. Создание динамических XML-файлов Sitemap для крупных сайтов

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

    Вместо этого вам следует установить правила, чтобы определить, когда страница будет включена в вашу XML-карту сайта и / или изменена с noindex на «index, follow».

    Вы можете найти подробные инструкции о том, как именно создать динамическую карту сайта XML, но, опять же, этот шаг значительно упрощается с помощью инструмента, который генерирует для вас динамические карты сайта.

    8. Используйте XML-файлы Sitemap и RSS / Atom-каналы.

    RSS / Atom-каналы уведомляют поисковые системы, когда вы обновляете страницу или добавляете свежий контент на свой веб-сайт.

    Google рекомендует использовать обе карты сайта и RSS / Atom, чтобы помочь поисковым системам понять, какие страницы следует индексировать и обновлять.

    Включая только недавно обновленный контент в ваши RSS / Atom-каналы, вы упростите поиск свежего контента как для поисковых систем, так и для посетителей.

    Реклама

    Продолжить чтение ниже

    9. Обновляйте время модификации только при внесении существенных изменений

    Не пытайтесь обманом заставить поисковые системы переиндексировать страницы, обновляя время модификации без внесения каких-либо существенных изменений на вашу страницу.

    Раньше я подробно говорил о потенциальных опасностях рискованного SEO.

    Я не буду повторять здесь все свои соображения, но достаточно сказать, что Google может начать удалять ваши отметки даты, если они постоянно обновляются без предоставления нового значения.

    10. Не включайте URL-адреса «noindex» в свой файл Sitemap.

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

    Когда вы отправляете карту сайта, которая включает заблокированные страницы и страницы «noindex», вы одновременно сообщаете Google «очень важно, чтобы вы проиндексировали эту страницу» и «вам не разрешено проиндексировать эту страницу.»

    Распространенная ошибка — это отсутствие единообразия.

    11. Не беспокойтесь о настройках приоритета

    В некоторых файлах Sitemap есть столбец «Приоритет», который якобы сообщает поисковым системам, какие страницы наиболее важны.

    Реклама

    Продолжить чтение ниже

    Однако, действительно ли эта функция работает, уже давно обсуждается.

    Еще в 2017 году Гэри Иллис из Google написал в Твиттере, что робот Googlebot игнорирует настройки приоритета при сканировании.

    12.Не позволяйте вашему файлу Sitemap становиться слишком большим

    Чем меньше ваш файл Sitemap, тем меньше нагрузка на ваш сервер.

    Google и Bing увеличили размер принимаемых файлов карты сайта с 10 МБ до 50 МБ и 50 000 URL-адресов на карту сайта.

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

    Реклама

    Продолжить чтение ниже

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

    Вот совет Джона Мюллера из Google о том, как добавить карты сайта для более чем 50 000 URL. TL; DR: создайте файл карты сайта для карт сайта.

    13. Не создавайте карту сайта, если у вас нет

    Помните, что не каждому веб-сайту нужна карта сайта.

    Google может довольно точно найти и проиндексировать ваши страницы.

    По словам Мюллера, карта сайта сама по себе не приносит одинаковой SEO-ценности для всех.

    По сути, если ваш веб-сайт представляет собой портфолио / одностраничный веб-сайт или если это веб-сайт организации, который вы редко обновляете, карта сайта на самом деле не нужна.

    Однако, если вы публикуете много нового контента и хотите, чтобы он был проиндексирован как можно скорее, или если у вас есть сотни тысяч страниц (например, на веб-сайте электронной коммерции), то карта сайта по-прежнему является отличным способом предоставить информацию напрямую в Google.

    Дополнительные ресурсы:

    Реклама

    Продолжить чтение ниже


    Изображение предоставлено

    Все скриншоты, сделанные автором, октябрь 2020 г.

    Частота изменения карты сайта не имеет большого значения

    Я недавно обновил мой генератор карты сайта, и решил изучить, как следует использовать элемент changefreq .В моем старом генераторе он был включен, и мне было интересно, актуально ли его включать.

    Причина, по которой я думал об этом, состоит в том, что логически просто не имеет большого смысла включать это, потому что вы не можете точно предсказать, как часто страница будет изменяться простым способом. Конечно, вы можете рассчитать частоту изменений, но проблемы с ее реализацией просто не стоят того.

    Кроме того, если в ваши файлы карты сайта включен элемент lastmod , то логически он должен просто «переопределить» спецификацию changefreq .Если дата последнего изменения изменится, то Google и, предположительно, другие поисковые системы должны просто повторно сканировать эту конкретную страницу.

    Кратко:

    • changefreq не является обязательным, и его можно безопасно пропустить.
    • Лучше включать метку времени с помощью элемента lastmod , и формат должен быть: Y-m-d
    • Приоритет не влияет на частоту сканирования.
    • Если пропустить changefreq и priority , вы сэкономите полосу пропускания.

    Видеовстреча для веб-мастеров Google

    Еще в мае 2015 года в Google для веб-мастеров была проведена видеовстреча, на которой это кратко обсуждалось. Кто-то задал следующий вопрос:

    Имеет ли значение приоритет и частота в карте сайта, если нет, как мы можем указать роботу Google сканировать определенные страницы с ежедневным и высоким приоритетом?

    Во-первых, ежедневное сканирование всех ваших страниц — это не то, чего вы хотели бы, так как это просто вызовет ненужную нагрузку на ваш сервер.Во-вторых, приоритет и частота изменения являются абстрактными темами. Не сразу понятно, как они используются поисковыми системами. Согласно sitemap.org :

    • Приоритет может иметь значение от 0,0 до 1,0 и используется для указания приоритета, когда поисковым системам необходимо сделать выбор между страницами. Он не используется для указания приоритета сканирования.
    • changefreq можно присвоить значение ежедневно , еженедельно , ежемесячно и ежегодно .Он показывает, как часто страница обновляется, чтобы упростить сканирование для поисковых систем, когда другие сигналы отсутствуют. Если вы включите элемент lastmod в формат Y-m-d , то вы можете опустить элемент change frequency .

    Джон Мюллер ответил на этот вопрос:

    Приоритет и частота изменений больше не играют большой роли в файлах Sitemap.

    Итак, это то, где мы пробуем разные вещи, но, по сути, если у вас есть файл карты сайта , и вы используете его, чтобы сообщить нам об страницах, которые изменились и которые были обновлены , гораздо лучше просто указать метка времени напрямую, чтобы мы могли заглянуть в наши внутренние системы и сказать: «о, мы не сканировали с этой даты, поэтому мы должны сканировать снова.»

    И просто ежедневное сканирование не имеет особого смысла, если контент не меняется. Итак, это то, на чем мы видим много сайтов, они предоставляют нам эту информацию в файле карты сайта, они говорят, что она меняется ежедневно или еженедельно. Мы ищем в нашей базе данных то, что видим, когда ползаем; мы говорим: «ну, это не менялось месяцами или годами; почему они говорят, что это ежедневно?»

    Ясно, что здесь есть что-то вроде отключения, где мы, вероятно, должны что-то там игнорировать.

    Джон продолжает объяснять, что он рекомендует:

    Итак, то, что я действительно рекомендую сделать, — это всего лишь с использованием метки времени и обеспечение того, чтобы метка времени всегда была актуальной, чтобы мы могли работать с этой меткой времени и сказать: «ну, мы просмотрели эту дату , вы говорите, что он изменился в этот другой день, поэтому мы должны сканировать снова «.

    Видео:

    Включая метку времени из PHP

    В PHP вы можете легко добавить метку времени, используя функцию date ; следующее предполагает, что вы используете в своей базе данных временные метки unix:

     эхо ''.date ('Y-m-d', $ row ['timestamp']). ''. "\ п";
     

    Конечно, если вы используете CMS, например WordPress, то это нужно делать автоматически.

    Если вы хотите узнать, как сгенерировать карту сайта из PHP, вам следует прочитать это руководство:

    Создание карты сайта из PHP

    Ссылки

    1. 8 мая 2015 г .: видеовстреча в Центре веб-мастеров на английском языке — youtube.com
    2. Протокол Sitemap — карты сайта.org
    1. Посещаемость веб-сайта может колебаться в зависимости от времени года, но колебания в выходные дни, пожалуй, наиболее заметны.

    2. Трафик снова резко упал, и это то, что я лично планирую с этим делать.

    3. Имена классов HTML не имеют никакого влияния на SEO, но другие методы кодирования имеют некоторое ограниченное влияние.

    4. Поддомены могут быть более гибкими, чем каталоги, при выборе места для нового веб-приложения, основная причина заключается в том, что вы можете более легко настроить дополнительные серверы по мере необходимости.

    Подробнее в: SEO

    https://beamtic.com/changefreq-sitemap

    Частота изменения карты сайта не имеет большого значения

    Вышеуказанные поля доступны для редактирования когда в фокусе; нажмите CTRL + A для выбора и CTRL + C для копирования.

    Шаблон карты сайта | Хьюго

    Один шаблон Sitemap используется для создания файла sitemap.xml . Hugo автоматически поставляется с этим файлом шаблона. Работа над часть пользователей, если они не хотят настраивать sitemap.xml .

    Карта сайта — это страница , и поэтому в ней есть все переменные страницы, доступные для использования в этом шаблоне, а также переменные, специфичные для файла Sitemap:

    .Sitemap.ChangeFreq
    Частота смены страниц
    .Карта сайта.Приоритет
    Приоритет страницы
    .Карта сайта.Имя файла
    Имя файла карты сайта

    Если предоставлено, Hugo будет использовать / layouts / sitemap.xml вместо внутреннего шаблона sitemap.xml , который поставляется с Hugo.

    Шаблоны Sitemap

    Hugo имеет встроенные шаблоны файлов Sitemap, но при необходимости вы можете предоставить свои собственные в виде макетов / sitemap.xml или макетов / _default / sitemap.xml .

    Для многоязычных сайтов мы также создаем индекс Sitemap. Вы можете предоставить собственный макет для этого в макеты / sitemapindex.xml или макеты / _default / sitemapindex.xml .

    Hugo’s sitemap.xml

    Этот шаблон соответствует версии 0.9 протокола Sitemap.

      {{printf "" | safeHTML}}
    
      {{диапазон .Data.Pages}}
      
         {{.Permalink}}  {{если не .Lastmod.IsZero}}
         {{safeHTML (.Lastmod.Формат "2006-01-02T15: 04: 05-07: 00")}}  {{end}} {{with .Sitemap.ChangeFreq}}
         {{. }}  {{end}} {{if ge .Sitemap.Priority 0.0}}
         {{.Sitemap.Priority}}  {{end}} {{if .IsTranslated}} {{диапазон .Translations}}
         {{end}}
         {{end}}
      
      {{ конец }}
    
      

    Hugo’s sitemapindex.xml

    Используется для создания индекса Sitemap в многоязычном режиме:

      {{printf "" | safeHTML}}
    
    {{ диапазон . }}
    <карта сайта>
     {{.SitemapAbsURL}} 
    {{ если не .LastChange.IsZero}}
     {{.LastChange.Format "2006-01-02T15: 04: 05-07: 00" | safeHTML}} 
    {{ конец }}
    
    {{ конец }}
    
      

    Настроить

    sitemap.xml

    Значения по умолчанию для , и filename могут быть установлены в файле конфигурации сайта, например:

    config.

    ямл Toml json
      карта сайта:
      changefreq: ежемесячно
      имя файла: карта сайта.xml
      приоритет: 0,5
      
      [карта сайта]
      changefreq = 'ежемесячно'
      filename = 'sitemap.xml'
      приоритет = 0,5
    
      
      {
       "карта сайта": {
          "changefreq": "ежемесячно",
          "filename": "sitemap.			

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *