- English
- Русский
Лето пришло рано, в начале мая. За окном немыслимая жара. И в девять утра на градуснике 30 в тени. Жить можно, но с кондиционером. Работоспособность падает до нуля, делать не хочется ничего, пропадает аппетит и тянет к морю…
Поэтому, предлагаю сегодня поставить маленькую точку по установке и настройке XML-карты сайта и заняться чем-нибудь более интересным. Например, выйти к близлежащему водоёму и оттянуться с удочкой в руках.
Как-то совершенно неожиданно, у меня возникло множество проблем с настройкой Drupal-модуля «xmlsitemap». С одной стороны сказалось, что я несколько «плаваю» в теме Drupal, а с другой – моя «удача» постоянно находить «глюки» и недоработки разработчиков. А теперь, обо всём по порядку.
Для своего сайта я сначала попробовал релиз 6.х-1.2. Поставил без проблем. Всё заработало, но по своему недомыслию я решил, что в «корне» сайта обязательно должен создаваться файл sitemap.xml. Естественно, он там не создавался. Но, если ввести ссылку http://мой_сайт/sitemap.xml - всё показывалось. Т.е., файл существует виртуально, как некая ссылка. А сама ссылка опирается на данные кэша, собранные во время выполнения Cron-а.
Что же меня не устроило в этой версии? Самое основное – это то, какие ссылки там фигурировали и нерегулярность обновления данных. Данные в кэше появлялись и обновлялись только тогда, когда кто-то открывал ссылку на карту (http://мой_сайт/sitemap.xml). Странно это как-то… Хотя, я могу чего-то и не понимать. Но то, как и какие ссылки там отображались – меня точно не устраивало. Особенно это заметно на мультиязычном сайте. А я ведь уже пообещал сделать переводы некоторых материалов.
Поэтому, сразу перешёл к версии 6.х-2.0-rc1. Эта версия мне понравилась много больше. Вот, как я её поставил:
Главная » Управление » Настройка сайта » Языки
Закладка: многоязычная система
Поставить галочку на «Текущий язык и нейтральный язык».
Главная » Управление » Конструкция сайта » Модули
Я поставил «галочки» на следующих элементах (вообще, для начала работы достаточно XML sitemap и XML sitemap node):
Нажимаем кнопку «Сохранить настройки».
Если вы раньше экспериментировали с XML-картой, то там могла остаться прежняя настройка, и её лучше заранее удалить:
Главная » Управление » Настройка сайта » XML Sitemap
Закладка: «Список»
Стать на «старый» URL и выбрать действие – удалить.
И обязательно удалить папку \sites\default\files\xmlsitemap
Главная » Управление » Настройка сайта » 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
Конечно, здесь ещё можно «пошалить», но я ничего не стал менять. :))
Нажимаем кнопочку «Сохранить настройки».
Главная » Управление » Отчёты » Отчёт о состоянии
Видим: XML sitemap
Кэшированные XML-файлы устарели и должны быть обновлены. Вы можете запустить крон вручную для обновления файлов карты сайта.
Запускаем, ждём окончания.
Главная » Управление » Настройка сайта » XML Sitemap
Закладка: «Обновить карту сайта»
Если Вы раньше уже использовали карту сайта (ставили другие версии модуля, экспериментировали), то советую снять «галочку» с пункта «Сохранить и восстановить любые текущие включения и приоритет ссылок».
Жмём кнопку «Обновить карту сайта»
Главная » Управление » Настройка сайта » XML Sitemap
Закладка: «Список»
Должна быть хотя бы одна ссылка и одна страница
Жмём на ссылку – смотрим.
Если ссылка не работает (а это может быть, если у вас остались настройки от предыдущих попыток установки модуля(ей) XML sitemap), то надо эту ссылку удалить, ввести наново, запустить Cron и снова обновить карту сайта. Т.е., повторить все предыдущие пункты.
Но, могут быть и более тяжёлые случаи. Тогда на форумах рекомендуют поступить крайне жёстко – сначала «срубить под корень» модуль XML sitemap:
и поставить его «начисто»…
Нет, карта у меня получилась почти сразу и почти нормально. Но пришлось, как говорит мой друг, «шлифонуть напильником». Вижу первый «глюк»!
Перед тем, как устанавливать что-либо новое, я предпочитаю, как в своё время «старик» Павлов – мудрейший был человек – потренироваться «на кошках». Т.е., всё проверяю локально. А вот локально этот модуль у меня не «завёлся». Нет, конечно всё стало нормально, красиво… Только вот 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 я не включал. Охохонюшки!
Для всех бедолаг, кто столкнётся с этим и не знает, как поступить, рассказываю свой рецепт:
2.1. Способ №1:
· Главная » Управление » Управление пользователями » Настройки пользователей
· В открывшемся окне в самом низу жмём на XML sitemap
· Меняем включение на «Исключено».
· Сохранить настройки
2.2. Способ №2:
· Главная » Управление » Настройка сайта » XML sitemap
· Закладка «Настройки»
· Пункт «Пользователи»
· В выпавшем списке щёлкаем на «Пользователи» и попадаем по адресу (в настройки пользователей), где делаем, как описано выше.
· Главная » Управление » Настройка сайта » XML sitemap
· Закладка «Список»
· Удаляем URL
· Add XML sitemap
· Закладка «Rebuild links»
· Снимаю галочку на «Сохранить и восстановить любые текущие включения и приоритет ссылок».
· Жмём кнопку «Обновить карту сайта»
· Идём в закладку «Список»
· Проверяем результат.
Профили пользователей в XML-карте сайта исчезли навсегда. Со спокойной душой я добавил свою карту в файл «robots.txt»:
Sitemap: http://мой_сайт/sitemap.xml
Сейчас расположение этой директивы в файле robots.txt поисковики находят где угодно, но, по советам бывалых, рекомендую писать «как полагается» – в основном блоке директив «User-agent: *».
Моя «подлинность» Web-мастерами Google и Yandex не подвергалась сомнению – я подсуетился несколько раньше. Потому, последовательно зашёл по известным адресам, и зарегистрировал свою карту сайта. Дело сделано. Можно перевести дух. Всем, кому надо, теперь о ней узнали, и роботы (они же, пауки) начали вести себя смирно.
Но мне не «спалось». И, как-то на досуге, когда в очередной раз у меня «зачесались руки», я задался мыслью ускорить появление «паучков» на моём сайте, чтобы они быстрее разносили «благую весть» - появление новых материалов по своим поисковичкам. Есть такое дело!
Зашёл по адресу: Главная » Управление » Настройка сайта » XML sitemap. И открыл закладку «Search Engines»:
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.
Т.е., это их не интересует. А значит, пользовательскую ссылку для отправки данных Яндексу - лучше удалить, чтобы не заниматься дурной работой.
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer
Комментарии
Все довольно правильно.
Я не могу сказать, что у вас
Я не могу сказать, что у вас идеальный сайт, но вы стремитесь к лучшему, что весьма похвально, однако.
Не стыковка получается...
Попробую ответить