Вы здесь

Установка модуля XMLsitemap и решение возникших вопросов (ошибок)

XMLsitemap

Лето пришло рано, в начале мая. За окном немыслимая жара. И в девять утра на градуснике 30 в тени. Жить можно, но с кондиционером. Работоспособность падает до нуля, делать не хочется ничего, пропадает аппетит и тянет к морю…

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

 

Как-то совершенно неожиданно, у меня возникло множество проблем с настройкой Drupal-модуля «xmlsitemap». С одной стороны сказалось, что я несколько «плаваю» в теме Drupal, а с другой – моя «удача» постоянно находить «глюки» и недоработки разработчиков. А теперь, обо всём по порядку.

 

Для своего сайта я сначала попробовал релиз 6.х-1.2. Поставил без проблем. Всё заработало, но по своему недомыслию я решил, что в «корне» сайта обязательно должен создаваться файл sitemap.xml. Естественно, он там не создавался. Но, если ввести ссылку http://мой_сайт/sitemap.xml - всё показывалось. Т.е., файл существует виртуально, как некая ссылка. А сама ссылка опирается на данные кэша, собранные во время выполнения Cron-а.

 

Что же меня не устроило в этой версии? Самое основное – это то, какие ссылки там фигурировали и нерегулярность обновления данных. Данные в кэше появлялись и обновлялись только тогда, когда кто-то открывал ссылку на карту (http://мой_сайт/sitemap.xml). Странно это как-то… Хотя, я могу чего-то и не понимать. Но то, как и какие ссылки там отображались – меня точно не устраивало. Особенно это заметно на мультиязычном сайте. А я ведь уже пообещал сделать переводы некоторых материалов.

 

Поэтому, сразу перешёл к версии 6.х-2.0-rc1. Эта версия мне понравилась много больше. Вот, как я её поставил:

 

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

Главная » Управление » Настройка сайта » Языки

Закладка: многоязычная система

Поставить галочку на «Текущий язык и нейтральный язык».

 

  1. Включаем в модулях XML SiteMap:

Главная » Управление » Конструкция сайта » Модули

Я поставил «галочки» на следующих элементах (вообще, для начала работы достаточно XML sitemap и XML sitemap node):

 

  • XML sitemap
  • XML sitemap engines
  • XML sitemap internationalization
  • XML sitemap menu
  • XML sitemap node
  • XML sitemap taxonomy

Нажимаем кнопку «Сохранить настройки».

 

  1. Этот пункт, если вы раньше не ставили на своём сайте модуль карты – пропускаете!

Если вы раньше экспериментировали с XML-картой, то там могла остаться прежняя настройка, и её лучше заранее удалить:

 

Главная » Управление » Настройка сайта » XML Sitemap

Закладка: «Список»

Стать на «старый» URL и выбрать действие – удалить.

И обязательно удалить папку \sites\default\files\xmlsitemap

 

  1. Создаём и настраиваем карту сайта:

Главная » Управление » Настройка сайта » XML Sitemap

Закладка: «Список»

Если в списке нет карты сайта – добавляем (Add XML sitemap)

 

Закладка: «Настройки»

Минимальное время жизни карты сайта: 1 день (у меня так рекомендовано)

Ставим «галочки»:

·              Использовать стили для лучшей читаемости карты сайта

·              Prefetch URL aliases during sitemap generation

 

Примечание:

Использование стилей повышает читаемость (для человека) страницы карты сайта.

Если Ваш сайт достаточно большой, то «галочку» с «Prefetch URL aliases during sitemap generation» - лучше снять, т.к. при выполнении операции по созданию карты сайта это «отъедает» много памяти.

 

В расширенных настройках:

Количество ссылок на каждой странице карты сайта: Автоматически

Maximum number of sitemap links to process at once: 100

 

Конечно, здесь ещё можно «пошалить», но я ничего не стал менять. :))

Нажимаем кнопочку «Сохранить настройки».

 

  1. Запускаем Cron вручную:

Главная » Управление » Отчёты » Отчёт о состоянии

Видим: XML sitemap

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

 

Запускаем, ждём окончания.

 

  1. Принудительно обновляем карту:

Главная » Управление » Настройка сайта » XML Sitemap

Закладка: «Обновить карту сайта»

 

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

 

Жмём кнопку «Обновить карту сайта»

 

  1. Проверяем карту сайта:

Главная » Управление » Настройка сайта » XML Sitemap

Закладка: «Список»

Должна быть хотя бы одна ссылка и одна страница

Жмём на ссылку – смотрим.

 

Если ссылка не работает (а это может быть, если у вас остались настройки от предыдущих попыток установки модуля(ей) XML sitemap), то надо эту ссылку удалить, ввести наново, запустить Cron и снова обновить карту сайта. Т.е., повторить все предыдущие пункты.

 

Но, могут быть и более тяжёлые случаи. Тогда на форумах рекомендуют поступить крайне жёстко – сначала «срубить под корень» модуль XML sitemap:

 

  • Перейти в раздел модулей (Главная » Управление » Конструкция сайта » Модули).
  • Запретить весь модуль xmlsitemap.
  • Перейти в закладку «Удалить» и удалить их там.
  • Удалить модуль физически с диска, и папку кэша (обычно \sites\default\files\xmlsitemap).
  • Выполнить обновление http://мой_сайт/update.php.
  • Просмотреть базу данных и удалить все таблицы и переменные, начинающиеся с  «xmlsitemap».

и поставить его «начисто»…

 

 

Нет, карта у меня получилась почти сразу и почти нормально. Но пришлось, как говорит мой друг, «шлифонуть напильником». Вижу первый «глюк»!

 

Перед тем, как устанавливать что-либо новое, я предпочитаю, как в своё время «старик» Павлов – мудрейший был человек – потренироваться «на кошках». Т.е., всё проверяю локально. А вот локально этот модуль у меня не «завёлся». Нет, конечно всё стало нормально, красиво… Только вот Cron стал вылетать на ошибках… А в сетевой версии всё работало «тип-топ». Странно!..

 

Решение на форумах я не нашёл, но зато прочёл про множество других «косяков». Большинство решений сводилось к правке файла «xmlsitemap.xmlsitemap.inc». Почесав в затылке, я поступил так же:

 

/** Параметры пути дополняем абсолютным путем из глобального массива $_SERVER

    $this->uri = xmlsitemap_sitemap_get_file($sitemap, $page);

 */

    $this->uri = $_SERVER['DOCUMENT_ROOT'].'/'.xmlsitemap_sitemap_get_file($sitemap, $page);

 

Эта «таблетка» помогла просто замечательно. Заработало!

 

 

Через пару дней я увидел очередную пакость: в карту сайта добавились ссылки к профилям пользователям. И туда полезли боты и остальные недоброжелатели. Но спасло то, что у меня, как у известного персонажа, висела табличка: «Посторонним В.», т.е. доступ был закрыт. Странная проблема… Ведь, XML sitemap user я не включал. Охохонюшки!

 

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

 

  1. Включаем XML sitemap user
  • Идём в модули (Главная » Управление » Конструкция сайта » Модули)
  • Ставим «галочку» на XML sitemap user
  • Сохранить настройки
  1. Отключаем отображение профилей пользователей в карте:

2.1.  Способ №1:

·        Главная » Управление » Управление пользователями » Настройки пользователей

·        В открывшемся окне в самом низу жмём на XML sitemap

·        Меняем включение на «Исключено».

·        Сохранить настройки

 

2.2.  Способ №2:

·        Главная » Управление » Настройка сайта » XML sitemap

·        Закладка «Настройки»

·        Пункт «Пользователи»

·        В выпавшем списке щёлкаем на «Пользователи» и попадаем по адресу (в настройки пользователей), где делаем, как описано выше.

 

  1. Регенерируем карту:

·        Главная » Управление » Настройка сайта » XML sitemap

·        Закладка «Список»

·        Удаляем URL

·        Add XML sitemap

 

·        Закладка «Rebuild links»

·        Снимаю галочку на «Сохранить и восстановить любые текущие включения и приоритет ссылок».

·        Жмём кнопку «Обновить карту сайта»

 

·        Идём в закладку «Список»

·        Проверяем результат.

 

  1. Выключаем XML sitemap user:
  • Идём в модули (Главная » Управление » Конструкция сайта » Модули)
  • Снимаем «галочку» с XML sitemap user
  • Сохранить настройки

 

Профили пользователей в XML-карте сайта исчезли навсегда. Со спокойной душой я добавил свою карту в файл «robots.txt»:

 

Sitemap: http://мой_сайт/sitemap.xml

 

Сейчас расположение этой директивы в файле robots.txt поисковики находят где угодно, но, по советам бывалых, рекомендую писать «как полагается» в основном блоке директив «User-agent: *».

 

Моя «подлинность» Web-мастерами Google и Yandex не подвергалась сомнению  я подсуетился несколько раньше. Потому, последовательно зашёл по известным адресам, и зарегистрировал свою карту сайта. Дело сделано. Можно перевести дух. Всем, кому надо, теперь о ней узнали, и роботы (они же, пауки) начали вести себя смирно.

 

 

Но мне не «спалось». И, как-то на досуге, когда в очередной раз у меня «зачесались руки», я задался мыслью ускорить появление «паучков» на моём сайте, чтобы они быстрее разносили «благую весть» - появление новых материалов по своим поисковичкам. Есть такое дело!

 

Зашёл по адресу: Главная » Управление » Настройка сайта » XML sitemap. И открыл закладку «Search Engines»:

 

  • В разделе «Отправлять карту сайта на следующие поисковики» я отметил Google
  • Указал, что «Не отправлять чаще чем раз в»  1 час
  • И «Отправлять только если карта сайта была изменена с последней отправки».

Google стал приходить вовремя!

 

 

А раз такое дело, то почему бы не «осчастливить» и Яндекс? Сказано – сделано. В той же закладке я добавил свою «пользовательскую ссылку»:

http://webmaster.yandex.ru/wmconsole/sitemap_list.xml?host=[sitemap]

Жмём «Сохранить настройки».

 

Откуда это я взял или где посмотреть? Посмотреть можно здесь: использование HTTP-запроса. Легко видеть, что все «люди, как люди», а у Яндекса свои «заморочки».

 

 

А потом «зазвонил телефон». При отправке данных Яндексу пошла ошибка:

 

 

Тип

php

Пользователь

Гость

Местоположение

http://мой_сайт/cron.php

Источник отсылки

 

Сообщение

parse_url(/redirect.xml?path=/wmconsole/sitemap_list.xml?host=

http://мой_сайт/ru/sitemap.xml) [<a href='function.parse-url'>function.parse-url</a>]: Unable to parse URL в файле  /var/www/мой_сайт/includes/common.inc в строке 458.

Важность

ошибка

 

 

Долго я думал, к чему бы это… На форумах не нашёл, но потом решил в файле

/includes/common.inc, в строке 458, сделать правку:

 

  // Parse the URL and make sure we can handle the schema.

/** Так было раньше

  $uri = parse_url($url);

 */

 

  $uri = @parse_url($url);

 

С тех пор, ошибки у меня исчезли, а жизнь сайта наладилась.

Но, если я сделал что-то неверно, прошу читателей меня поправить.

 

 

 

 

 

13.05.2012 г.   Карандаш.

 

P.S.: Кстати, в Drupal 7 в common.inc написано, как у меня: $uri = @parse_url($url);

Как говорится, «у дураков мысли сходятся». 

 

 

P.S.: 20.10.2014 г. - Drupal 6.33 + XMLsitemap 6.x-2.0

 

Для работы с локальной копией по-прежнему нужна правка в xmlsitemap.xmlsitemap.inc, а корректировку в /includes/common.inc делать уже не надо.

 

В виду очередных изменений в политике Яндекса (с весны 2014 г.), отсылать ему сообщения об изменениях в SiteMap - не надо. Если будете настаивать, то сайт получит ответ:

   Submitted the sitemap to hxxp://webmaster.yandex.ru/wmconsole/sitemap_list.xml?
   host=http://<имя вашего сайта>/sitemap.xml and received response 404.

 

Т.е., это их не интересует. А значит, пользовательскую ссылку для отправки данных Яндексу - лучше удалить, чтобы не заниматься дурной работой.

 

 

P.S.: 22.12.2014 г. - XMLsitemap 6.x-2.1
Для работы с локальной копией по-прежнему нужна правка в xmlsitemap.xmlsitemap.inc.
 

Комментарии

Все довольно правильно. Акцентированы некоторые тонкости, здорово!!!

Я не могу сказать, что у вас идеальный сайт, но вы стремитесь к лучшему, что весьма похвально, однако.

Не стыковка получается... если в самом sitemap.xml указывается частота обновления страниц, логичнее в нем же и указывать частоту обновления самого sitemap... зачем еще поисковики уведомлять об изменениях. Или поисковики так не умеют? Добавил вручную sitemap на яндекс, а он мне в ответ: "ну теперь жди две недели". Сервис))

Зачем поисковики уведомлять об изменениях? Чтобы Ваши страницы как можно скорее попали в поиск. Т.о., Вы подталкиваете поисковик скорее прислать своего робота для индексации (если, конечно, у Вас что-то изменилось). Можно этого не делать? Можно. Поисковики всё равно узнают о новостях Вашего сайта. Но, несколько позже.
 
По поводу поведения роботов, поисковиков и их отношения к настройкам. Создавая их, мы лишь сообщаем наши пожелания. А как будет поступать поисковик и его роботы - зависит от программистов, которые их создали. В частности, (как отметил выше в примечании) я достаточно давно не посылаю уведомления об обновлении "Яндексу". Ибо, это бесполезно.
 
Можно ли обойтись без создания карты сайта или не регистрировать её на Поисковике(-ах)? Можно. Карта нужна лишь для помощи роботам в сборе информации (если они этому обучены). Её создание может (непрямым способом) несколько снизить нагрузку (или сделать её более равномерной) от посещения роботов и повысить прогнозируемость появления Ваших страничек в результатах поиска. И ничего более.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer