Ситемап хмл: что это, зачем она нужна, и как её создать – Блог Netpeak Software

Содержание

sitemap.xml

  • Популярные
  • Последние
  • Без ответа
  • +9Настраиваемая генерация карты сайта (sitemap.xml)

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

  • org/Article»>
  • +4sitemap.xml — приоритет категорий и товаров

    Здравствуйте!Уважаемые разработчики, есть предложение которое я считаю логичным и важным для поисковых роботов.  По стандарту, файл sitemap.xml генерируется с таким приоритетом:URL категорий — 0.6URL товаров — 0.8Это правильно и очень логично если,…

  • +3Файл sitemap и > 50 000 URL

    Как изместно «Файл sitemap может содержать не более 50 000 URL», а вот что делать есть он содержит более 50К URL? Может ли шопскрипт формироваться 2 и более (sitemap-2) если количество url привысило максимально допустимое. ..

  • Еще один зашквар с sitemap.xml

    Давно конечно замечено, но что-то никто не поднимает тему. Как вам, владельцы ИМ, иметь ссылку на Вебасист (и не только) в своем sitemap.xml? Причем ссылка еще и на дохлый домен (ну, чему удивляться, это же Вебасист). А домен собственно…

  • org/Article»>

    +1Добавить возможность переименовывать sitemap

    Предлагаю добавить функционал что бы была возможность переименовывать файлы sitemap сейчас можно слить всю структуру сайта по стандартным /sitemap.xml было бы хорошо если такие файлы можно переименовать что бы никто не мог видеть их кроме владельца…

  • org/Question»>
  • sitemap в вебмастере

    Добрый день! Сайт с несколькими витринами.  Подскажите, почему в яндекс вебмастере сайта-витрины sitemap прогружается не только этой витрины, но и основного сайта. Roborsы загружены у каждой витрины индивидуально.  

  • Скрытые товары в sitemap

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

  • Не генерируется sitemap.xml

    Здравствуйте!Помогите, пожалуйста, разобратьсяНе генерируется sitemap.xmlhttp://www.grassline.ru/sitemap.xmlвыдает<h2Times New Roman»;»>Not Found</h2>The requested URL /sitemap.xml was not found on…

  • org/Question»>

    Противоречие между robots.txt и sitemap.xml ?

    Google Search Console присылает сообщение об ошибке: «Индексирование отправленных URL», «Ошибки при сканировании отправленного URL, при проверке в консоли google проблема еще уточняется «Доступ к отправленному URL заблокирован в…

  • Пропал sitemap. xml

    Добрый день!5 дней наз почему то пропал ,пишет ошибку :Ошибка синтаксического анализа XML: корневой элемент не найденАдрес: https://музшоп.рф/sitemap.xmlСтрока 1, символ 1 Версия Shop-Script…

  • Внутренние подстраницы sitemap.xml пустые

    Добрый день, подскажите пожалуйста, в чем может быть причина. Сама страница sitemap.xml есть — http://sangold. ru/sitemap.xmlНо при переходе по внутренним ссылкам, там пусто и перебрасывает на 404 страницу. И при этом в админке еще при нажатии на…

  • +1Пустой файл SiteMap. xml для сайта comcopy.ru Не принято

    Добрый вечер!по ссылке https://comcopy.ru/sitemap.xml , а также по ссылке http://comcopy.ru/sitemap.xml открывается пустое поле.Не могу понять, почему файл SiteMap.xml не отображается по данному адресу?Его видят и Яндекс и Гугл. Или может что-то не…

  • Залить robots и sitemap Есть решение

    Здравствуйте!На сайт необходимо залить robots и sitemap, но для этого нужен доступ к приложению «Сайт» (у меня только «Магазин»). Подскажите, есть ли другие способы это сделать?

  • Проблема с sitemap

    Народ, очень прошу помощи. Сайт работает, но просел в поиске. За всеми переездами забыл про sitemap. Магазин работает тут http://i-ekb.ru/store/В http://i-ekb.ru/store/sitemap.xml показывает какую-то ересь, как и в…

  • org/Question»>

    товары с других витрин в sitemap

    Добрый день. Есть несколько доменов, при этом в товарах указано, на каком витрине отображать товары. На сайте, на котором они не должны отображаться — они не видны. Но в карте сайта есть. Как сделать отображение в карте сайта только тех товаров,…

  • org/Question»>

    Файл sitemap-shop.xml в консоли Гугл Вебмастер. Ошибка.

    Файл sitemap-shop.xml в консоли Гугл Вебмастер показывает ошибку: Файл Sitemap является страницей HTML. Похоже, что файл Sitemap является страницей HTML. Используйте поддерживаемый формат Sitemap. При этом не отображается кол-во страниц в индексе и в…

  • org/Question»>

    Не генерируется sitemap.xml Shop Script 6 Есть решение

    artlife-24.ru/sitemap.xmlНе генерируется карта сайта, при переходе по ссылке пустой файл ничего нет. Что я делаю не так? Поселения опубликованы.

  • org/Article»>

проверьте, найден ли ваш XML-файл Sitemap ᐈ

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

Проверка XML Sitemap – это инструмент, используемый для проверки того, есть ли на конкретном веб-сайте XML-карта сайта. Но вот вопрос: что такое карта сайта в формате XML и зачем нам знать эту информацию?

XML-карта сайта представляет собой простой файл с большим набором команд, написанных для взаимодействия с роботами поисковых систем. Например, с помощью Googlebot, поискового робота Google. XML-карта сайта – это дорвей, соединяющий HTML-страницу с другими поисковыми системами. это видно онлайн.

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

Об использовании XML Sitemap Checker: пошаговое руководство

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

Шаг 1. Вставьте URL-адрес

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

Шаг 2. Интерпретация результатов Sitemap Tester

Анализ сайта займет пару секунд. Результаты появятся прямо под полем запроса, когда информация будет собрана.

Случаи, когда требуется Sitemap Checker

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

https://www.google.com/ping?sitemap=https://YourWebsite.com/sitemap.xml

Введите его в строке поиска, а затем добавьте файл sitemap.xml в Search Console. Это лучший и самый быстрый способ сделать карту сайта для Google. Кроме того, вы можете посмотреть обучающее видео по Google Search Console от Дэниела Вайсберга.

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

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

Вопрос индексации

Карта сайта в формате XML помогает индексировать каждый адрес веб-сайта. Программный блок не отправляет команды индексации в систему поиска механизмов. Гугл все делает сам. Система сканирует сайт, выбирает страницы лучшего качества и индексирует их. Однако это помогает сделать это быстрее.
Есть еще одна вещь, о которой следует упомянуть: неиндексируемые страницы. Безиндексные страницы в карте сайта создайте список проблемы с индексацией. Но в некоторых случаях важно указать страницы, которые Google не должен индексировать.

Отсутствие стабильности

Шаблоны примеров XML-карты сайта обычно имеют проблемы со стабильностью сообщений о статусе потенциально проиндексированной страницы, передаваемых в поисковую систему. Следующие команды могут привести к путанице:

  • “Без индексации” – означает, что страницу не нужно индексировать;
  • «Nofollow» — на странице нет важной информации;
  • “Noindex, nofollow” — для системы эта страница не существовала бы.

Общая применимость сайта

Механизм поиска может иметь некоторые личные параметры или индикаторы, которые выбирают веб-страницы для продвижения. Но если кто-то действует как машина и анализирует веб-сайт на 1000 страниц, корреляция будет заметна. В случае, если 5-6 страниц были созданы для машины, а остальные ориентированы на человека, сайт не займет первые места в SERP. Крайне важно найти баланс между текстами, ориентированными на машину, и текстами, ориентированными на человека, чтобы оптимизация могла продвигать его через веб-сайт.

Проблемы огромных веб-сайтов

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

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

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

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

Обнаружение и анализ не только файла sitemap.xml, но и других проблем SEO на вашем сайте!

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

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

Карта сайта что это?

Карта сайта — это файл, содержащий информацию обо всех страницах веб-сайта.

Как найти ссылку на карту сайта?

Чтобы найти ссылку на карту сайта, используйте XML Sitemap Checker. Он покажет, есть ли на сайте карта сайта или нет.

Как проверить, работает ли карта сайта?

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

XML Sitemaps: самый непонятый инструмент в наборе инструментов SEO

Взгляды автора являются полностью его или ее собственными (за исключением маловероятного случая гипноза) и могут не всегда отражать взгляды Moz.

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


Индексация

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

Сказав это, это  – . Важно отметить, что, отправляя XML-карту сайта в Google Search Console, вы даете Google понять, что считаете страницы в XML-карте сайта качественными целевыми страницами поиска, достойными индексации. Но это всего лишь намек на то, что страницы важны… так же, как ссылка на страницу из вашего главного меню.


Согласованность

Одна из наиболее распространенных ошибок, которую я вижу у клиентов, заключается в отсутствии согласованности в сообщениях Google о данной странице. Если вы заблокируете страницу в robots.txt, а затем включите ее в карту сайта XML, вас дразнят. «Вот, Google… красивая, сочная страница, которую вы действительно должны проиндексировать», — говорит ваша карта сайта. Но потом ваш robots.txt забирает его. То же самое с мета-роботами: не включайте страницу в XML-карту сайта, а затем устанавливайте для мета-роботов «noindex,follow».

Пока я на этом, позвольте мне кратко рассказать о мета-роботах: «noindex» означает, что страница не индексируется. «Nofollow» означает ничего об этой странице. Это означает «не переходить по исходящим ссылкам с этой страницы», т. е. спустить весь этот ссылочный вес в унитаз. Вероятно, есть какая-то непонятная причина для установки мета-роботов «noindex,nofollow», но я не понимаю, что это может быть. Если вы хотите, чтобы Google индексировал страницу с кодом , а не , установите для мета-роботов значение «noindex,follow».

Хорошо, разглагольствуйте…

В общем, вы хотите, чтобы каждая страница на вашем сайте попадала в две корзины:

  1. Вспомогательные страницы (полезные для пользователей, но не то, что вы ожидаете от целевой страницы поиска)
  2. Вкусно, качественно Целевые страницы поиска

Все в корзине № 1 должно быть заблокировано с помощью robots. txt или заблокировано с помощью мета-роботов «noindex,follow» и должно быть , а не в XML-карте сайта.

Все в корзине № 2 должно быть заблокировано в robots.txt , а не , если , а не не должны иметь мета-роботов «noindex» и, вероятно, должны быть в XML-карте сайта.

(Изображение ведра до того, как я его украсил, предоставлено Миннесотским историческим обществом на Flickr.)


Общее качество сайта

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

Подумайте об этом с точки зрения Google. Допустим, у вас есть одна отличная страница, наполненная потрясающим контентом, который отвечает всем требованиям, от релевантности Panda до участия в социальных сетях. Если Google видит ваш сайт как 1000 страниц контента, из которых только 5–6 страниц похожи на эту замечательную страницу… ну, если Google отправляет пользователя на одну из этих замечательных страниц, каким будет взаимодействие с пользователем, если он нажмет ссылку на этой странице и посетить что-то еще на вашем сайте? Скорее всего, они попадут на отстойную страницу. Это плохой UX. Зачем им отправлять пользователя на такой сайт?

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

Если ваша XML-карта сайта включает все эти страницы, что вы сообщаете Google? Более или менее, вы понятия не имеете, что является хорошим контентом на вашем сайте, а что нет.

Вот картинка, которую вы хотите нарисовать вместо Google. Да, у нас есть сайт с 1000 страниц… и вот 475 из этих 1000 страниц с нашим замечательным контентом. Вы можете игнорировать другие — это служебные страницы.

Теперь предположим, что Google сканирует эти 475 страниц и на основании своих показателей решает, что 175 из них относятся к категории «А», 200 — к категории «В+» и 100 — к категории «В» или «В-». Это довольно хороший общий средний показатель, который, вероятно, указывает на довольно солидный сайт, на который можно направлять пользователей.

Сравните это с сайтом, который отправляет все 1000 страниц через XML-карту сайта. Теперь Google просматривает 1000 страниц, которые вы называете хорошим содержанием, и видит, что более 50% из них являются страницами категории «D» или «F». В среднем ваш сайт довольно отстойный; Google, вероятно, не хочет отправлять пользователей на такой сайт.


Скрытая чепуха

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

Важно сделать сайт: выполните поиск, чтобы увидеть все страницы, которые Google индексирует с вашего сайта, чтобы обнаружить страницы, о которых вы забыли, и очистить их от той «средней оценки», которую Google собирается дать вашему сайту. сайт, установив для мета-роботов «noindex,follow» (или блокировку в robots.txt). Как правило, самые слабые страницы, которые все еще находятся в индексе, будут отображаться на сайте последними: поиск.


Noindex против robots.txt

Существует важное, но тонкое различие между использованием мета-роботов и использованием robots.txt для предотвращения индексации страницы. Использование мета-роботов «noindex,follow» позволяет ссылочному весу стать равным 9.От 0013 до эта страница перетекает из на страницы, на которые она ссылается. Если вы заблокируете страницу с помощью robots.txt, вы просто смоете это в унитаз.

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

Думайте о странице как о странице «Свяжитесь с нами» или странице с политикой конфиденциальности, на которую, вероятно, ссылается каждая отдельная страница вашего сайта через главное меню или меню нижнего колонтитула. Так что на эти страницы идет тонна ссылочного веса; ты просто хочешь выбросить это? Или вы бы предпочли, чтобы эта ссылка распространялась на все в вашем главном меню? Легко ответить на вопрос, не так ли?


Управление полосой пропускания при сканировании

В каких случаях вам действительно может понадобиться использовать robots.txt? Возможно, если у вас проблемы с пропускной способностью сканирования, а робот Googlebot тратит много времени на получение служебных страниц только для того, чтобы обнаружить в них мета-роботов «noindex,follow», и им приходится спасаться. Если у вас их так много, что робот Googlebot не получает доступ к вашим важным страницам, возможно, вам придется заблокировать их через robots.txt.

Я видел, как несколько клиентов увидели улучшение ранжирования по всем направлениям, очистив свои XML-карты сайта и не индексируя свои служебные страницы:

Действительно ли у меня есть от 6 000 до 20 000 страниц, которые нужно сканировать ежедневно? Или Googlebot гоняется за URL-адресами ответа на комментарий или отправки по электронной почте?

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


Устранение проблем с индексацией

Вот где XML-карта сайта действительно полезна для оптимизаторов: когда вы отправляете кучу страниц в Google для индексации, и только некоторые из них действительно индексируются. Google Search Console не сообщит вам , какие страниц они индексируют, а только общее число, проиндексированное в каждой карте сайта XML.

Предположим, вы являетесь сайтом электронной коммерции и у вас есть 100 000 страниц продуктов, 5 000 страниц категорий и 20 000 страниц подкатегорий. Вы отправляете XML-карту сайта из 125 000 страниц и обнаруживаете, что Google индексирует 87 000 из них. Но какие 87000?

Во-первых, ваши страницы категорий и подкатегорий, вероятно, ВСЕ важные цели поиска для вас. Я бы создал категорию-sitemap.xml и подкатегорию-sitemap.xml и отправил их по отдельности. Вы ожидаете увидеть там почти 100% индексацию — и если вы ее не получаете, то вы знаете, что вам нужно подумать о том, чтобы создать больше контента на них, увеличить ссылочный вес для них или и то, и другое. Вы можете обнаружить что-то вроде категорий продуктов или страниц подкатегорий, которые не индексируются, потому что в них есть только 1 продукт (или вообще нет) — в этом случае вы, вероятно, захотите установить мета-роботов «noindex,follow» для них, и извлеките их из XML-карты сайта.

Скорее всего, проблема заключается в некоторых из 100 000 страниц товаров, но в каких именно?

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

Вы можете начать с 3 теорий:

  1. Страницы без изображения товара не индексируются
  2. Страницы, содержащие менее 200 слов уникального описания, не индексируются
  3. Страницы без комментариев/отзывов не индексируются

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

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

Как только вы узнаете, в чем проблема, вы можете либо изменить содержимое страницы (или ссылки на страницы), либо не индексировать страницы. Например, у вас может быть 20 000 из 100 000 страниц продуктов, на которых описание продукта содержит менее 50 слов. Если это термины с небольшим трафиком и вы получаете описания из фида производителя, вероятно, не стоит пытаться вручную написать дополнительные 200 слов описания для каждой из этих 20 000 страниц. С таким же успехом вы можете установить для мета-роботов значение «noindex,follow» для всех страниц с менее чем 50 словами описания продукта, поскольку Google в любом случае не собирается их индексировать, а они просто снижают общий рейтинг качества вашего сайта. И не забудьте удалить их из вашей XML-карты сайта.


Динамические XML-карты сайта

Теперь вы думаете: «Хорошо, отлично, Майкл. Но теперь мне нужно вручную синхронизировать мою XML-карту сайта с моими мета-роботами на всех моих 100 000 страниц», а это не так. вероятно, произойдет.

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

Вместо этого настройте логику правил для включения страницы в XML-карту сайта или нет, и используйте ту же логику на самой странице, чтобы установить индекс мета-роботов или noindex. Таким образом, в тот момент, когда описание продукта из фида производителя обновляется производителем и увеличивается с 42 слов до 215 слов, эта страница на ваш сайт волшебным образом появляется в XML-карте сайта и его мета-роботы настроены на «индексировать, следить».

На моем туристическом веб-сайте я делаю это для множества разных страниц. Я использую классический ASP для этих страниц, поэтому у меня есть такие карты сайта:

  • https://www.visualitineraries.com/ItinSiteMap.asp

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


Файлы Sitemap для видео

А как насчет этих надоедливых файлов Sitemap для видео в формате XML? Это , поэтому 2015. Wistia даже не беспокоится о том, чтобы их генерировать; вы должны просто использовать разметку JSON-LD и schema.org/VideoObject на самой странице.


Резюме

  1. Будьте последовательны — если это заблокировано в robots.txt или мета-роботами «noindex», то лучше не быть в вашей XML-карте сайта.
  2. Используйте карты сайта в формате XML в качестве инструментов отслеживания , чтобы обнаруживать и устранять проблемы с индексацией, и разрешать/просить Google индексировать только те страницы, которые, как вы знаете, Google захочет проиндексировать.
  3. Если у вас большой сайт, используйте динамические XML-карты сайта — не пытайтесь вручную синхронизировать все это между robots.txt, мета-роботами и XML-картами сайта.

Изображение кукурузного поля предоставлено Робертом Наннелли на Flickr.

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

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

Обзор

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

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

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

Установка

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

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

(Примечание. Приложение Sitemap не устанавливает никаких таблиц базы данных. Единственное причина, по которой он должен войти в 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': карты сайта} . карты сайта должны быть словарем, который сопоставляет ярлык короткого раздела (например, блог или новости ) в свой класс Карта сайта (например, BlogSitemap или NewsSitemap ). Он также может сопоставляться с экземпляром класс Sitemap (например, BlogSitemap(some_var) ).

Классы Sitemap

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

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

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

Пример

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

 из django.contrib.sitemaps import Карта сайта
из записи импорта blog.models
класс BlogSitemap(Карта сайта):
    changefreq = "никогда"
    приоритет = 0,5
    элементы защиты (я):
        вернуть Entry.objects.filter(is_draft=False)
    определение последнего мода (я, объект):
        вернуть obj.pub_date
 

Примечание:

  • changefreq и приоритет класс атрибуты, соответствующие элементам и , соответственно. Их можно сделать вызываемыми как функции, как lastmod был в примере.
  • items() — это метод, который возвращает последовательность или QuerySet объектов. Возвращенные объекты будут переданы любому вызываемому объекту. методы, соответствующие свойству карты сайта ( местоположение , lastmod , changefreq и приоритет ).
  • lastmod должен возвращать datetime .
  • В этом примере нет метода location , но вы может предоставить его, чтобы указать 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' , используйте протокол .

ластмод

Дополнительно. Либо метод, либо атрибут.

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

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

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

пагинатор

Дополнительно.

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

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

Дополнительно. Либо метод, либо атрибут.

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

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

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

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

Дополнительно. Либо метод, либо атрибут.

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

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

Пример значений для приоритет : 0,4 , 1,0 . приоритет страницы по умолчанию 0.5 . См. sitemaps.org документация для более.

протокол

Дополнительно.

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

Устарело, начиная с версии 4.0: протокол по умолчанию для карт сайта, созданных вне контекста запрос изменится с 'http' на 'https' в Django 5.0.

предел

Дополнительно.

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

i18n

Дополнительно.

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

языков

Дополнительно.

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

чередуется

Дополнительно.

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

x_default

Дополнительно.

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

get_latest_lastmod ()

Новое в Django 4.1.

Дополнительно. Метод, который возвращает последнее значение, возвращенное ластмод . Эта функция используется для добавления lastmod атрибут контекста индекса Sitemap переменные.

По умолчанию get_latest_lastmod() возвращает:

  • Если lastmod является атрибутом: ластмод .
  • Если lastmod это метод: Последний lastmod вернулся, вызвав метод со всеми элементы, возвращенные Sitemap.items() .

Ярлыки

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

класс GenericSitemap ( info_dict , приоритет = нет , changefreq = нет , протокол = нет )

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

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

Пример

Вот пример конфигурации URL с использованием GenericSitemap :

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

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

просмотра. Индекс ( Запрос , Sitemaps , Template_Name = ‘sitemap_index.xml’ , content_type = ‘application/xml’ , sitemap_url_name = ‘djangs.comlibs.contribs.comlibs.com

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

  • Вы используете два вида в вашей конфигурации URL: django.contrib.sitemaps.views.index() и django.contrib.sitemaps.views.sitemap() .
  • Представление django.contrib.sitemaps.views.sitemap() должно занять раздел аргумент ключевого слова.

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

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

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

Если все карты сайта имеют lastmod , возвращенный Sitemap.get_latest_lastmod() индекс карты сайта будет иметь Заголовок Last-Modified равен последнему lastmod .

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

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

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

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

Добавлено использование заголовка Last-Modified .

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

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

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

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

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

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

Индекс

Переменная карты сайта представляет собой список объектов, содержащих местоположение и атрибут lastmod для каждой карты сайта. Каждый URL предоставляет следующие атрибуты:

  • местоположение : Местоположение (URL и страница) карты сайта.
  • lastmod : Заполняется get_latest_lastmod() метод для каждой карты сайта.

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

Контекст был изменен на список объектов с местоположением и необязательным lastmod атрибуты.

Карта сайта

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

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

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

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

 
<набор URL-адресов
  xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
{% без пробелов %}
{% для 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 %}
    <новости:новости>
      {% if url.item.publication_date %}{{ url.item. publication_date|date:"Y-m-d" }}{% endif %}
      {% if url.item.tags %}{{ url.item.tags }}{% endif %}
    
   
{% конец для %}
{% без пробелов %}

 

Pinging Google

Вы можете «пинговать» Google при изменении вашей карты сайта, чтобы сообщить об этом переиндексировать свой сайт. Фреймворк карты сайта предоставляет функцию, позволяющую просто что: 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 выполнит обратное поиск в вашей конфигурации URL для URL-адресов с именем 'django. contrib.sitemaps.views.index' , а затем 'django.contrib.sitemaps.views.sitemap' (без дополнительных аргументов) в автоматически определить URL-адрес карты сайта.

  • ping_url — по умолчанию используется инструмент Ping от Google: https://www.google.com/webmasters/tools/ping.

  • sitemap_uses_https — установите значение False , если ваш сайт использует http а не https .

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

Сначала зарегистрируйтесь в Google!

Команда ping_google() работает, только если вы зарегистрировали сайт с Google Search Console.

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

 из django.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *