Разрабатывая сайт на WordPress и используя плагины для создания карты сайта такие как, WordPress SEO by Yoast или Google XML Sitemaps и им подобные, некоторые сталкиваются с проблемой: внезапно перестает работать карта сайта. Рассмотрим одну из возможных причин возникновения неисправности.
Перейдя по ссылке http://вашсайт/sitemap.xml (или sitemap_index.xml), вы можете увидеть такую ошибку:
This page contains the following errors:
error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error.
Просмотрим код этой страницы в браузере. Если вы видите что-то подобное, значит с плагинами все в порядке и карта генерируется.
Проблема может быть вот в чем. Файлы на сервере хранятся в кодировке UTF-8. У этой кодировки существуют две разновидности: она может быть с BOM и без BOM.
BOM (Byte Order Mark) — маркер последовательности байтов. Это Юникод-символ, используемый для обозначения порядка байтов текстового файла.
В начале файлов в кодировке UTF-8 с BOM присутствуют несколько системных управляющих символов, что недопустимо в строгом определении декларации XML. Для нормальной работы файла, перед <?xml не должно быть ничего!
Если какие-либо файлы на сервере хранятся в UTF-8 с BOM, то карта сайта может перестать работать. Кодировка могла смениться, если вы редактировали файлы своего сайта (переводили сайт на русский, изменяли что-то или тому подобное), например, с помощью блокнота (он сохраняет файлы только в UTF-8 с BOM!). Рекомендуем использовать текстовый редактор Notepad++, в нем имеется соответствующая настройка. «Преобразовать в UTF-8 без BOM».
Теперь необходимо просканировать все файлы на сервере, найти те, в которых присутствует BOM, и исправить с помощью Notepad++ их кодировку. Для поиска таких файлов на сервере, в Интернете существует скрипт от Юрия Белотицкого. Есть две версии скрипта. Облегченная, которая выполняет поиск только в папках /wp-content/themes и /wp-content/plugins, в которых пользователи обычно редактируют файлы или кладут туда свои. И полная, которая сканирует все .php-файлы во всех поддиректориях. Скачать можно ниже.
Облегченная версия Полная версия
Разархивируем скрипт и зальем его в корневую директорию. Переходим в браузере по ссылке http://ваш.сайт/find_bom.php. Будут отображены все файлы, в которых необходимо исправить кодировку.
Исправляем ее во всех файлах из списка с помощью Notepad++.
Все. Карта сайта должна заработать.
Поделиться в соц. сетях:
Спасибо за решение! А то я уже всю голову сломал с неработающей картой, никак не мог понять в чём дело :-)