Недавно я перенес этот блог на новый сервер и почти сразу получил уведомление от Яндекс.Вебмастер, что у моего сайта не работает (не подключена, не доступна) XML карта сайта.
Но как же так могло получиться, что карта сайта sitemap xml не работает? Ведь начиная с версии 5.5 WordPress поддерживает создание XML карты сайта на уровне ядра, то есть «из коробки». Никаких действий от вебмастера не требуется, не нужны никакие плагины sitemap, xml генераторы, не нужно создавать xml файл онлайн и тому подобное.
Если попытаться открыть файл самостоятельно, набрав его адрес в браузере, по получаем ошибку 404, файл не найден.
Решение
Как оказалось проблема была на стороне сервера. Но это был не баг, а фича! Нужно исключить файлы с расширением XML из обработки статических файлов nginx.
Если вы используете FastPanel, которая сейчас бесплатная, то можете сделать это следующим образом:
При использовании других панелей управления ищите схожие опции настройки обработки статических файлов.
После исключения XML файлов из кеширования NGINX файл XML карты сайта стал нормально открываться в браузере:
Осталось дождаться когда Яндекс.Вебмастер увидит, что XML карта сайта стала доступна и обработает ее.
Почему так происходит
Почему отключение кеширования статических файлов в NGINX исправляет ошибку в работе XML карты сайта WordPress? Дело в том, XML карта сайта не смотря на то, что выглядит как адрес файла, на самом деле является запросом для WordPress. То есть физически на диске XML файл отсутствует и серверу NGINX нечего кешировать. Поэтому при запросе XML файла сервер NGINX ничего не отдает. После отключения кеширования запрос уходит к WordPress и он генерирует XML карту сайта, которую, теперь уже успешно, видит и обрабатывает Яндекс.Вебмастер.