Главная / База знаний / Индексация и видимость / sitemap.xml не работает: проверка и исправление
База знаний

sitemap.xml не работает: проверка и исправление

Карта сайта возвращает 404, не обновляется, содержит битые ссылки. Чек-лист правки.

Индексация и видимость · 3 мин чтения

Симптом

Причина

  1. Неправильный путь к файлу – файл sitemap.xml находится не в корне сайта, а в поддиректории, либо он переименован.
  2. Неправильные правила в .htaccess / nginx – правило перезаписи блокирует доступ к sitemap.
  3. Файл не генерируется – CMS (WordPress, Drupal, Joomla и др.) не создает sitemap из‑за отключенного модуля или ошибки в конфигурации.
  4. Проблемы с правами доступа – веб‑сервер не может читать файл из‑за неверных прав (chmod, owner).
  5. Неправильный формат XML – синтаксические ошибки делают файл недоступным для поисковых систем.
  6. Проблемы с кэшированием – старый sitemap остаётся в кэше, а новый не подгружается.

Как проверить

Шаг Действие Команда / пример
1 Проверить наличие файла в корне ls -l /var/www/html/sitemap.xml
2 Проверить права доступа stat -c "%a %U %G" /var/www/html/sitemap.xml
3 Проверить правила перезаписи cat /etc/nginx/sites-available/example.com (или .htaccess в Apache)
4 Проверить вывод sitemap через curl curl -I https://example.com/sitemap.xml
5 Проверить валидность XML xmllint --noout sitemap.xml
6 Проверить логи веб‑сервера tail -f /var/log/nginx/access.log
7 Проверить, генерирует ли CMS sitemap В админке CMS включить/выключить модуль sitemap и посмотреть лог генерации
8 Проверить наличие robots.txt curl https://example.com/robots.txt (должен ссылаться на sitemap)

Решение

1. Убедиться, что файл находится в корне и имеет правильные права

# Переместить файл в корень, если он в поддиректории
mv /var/www/html/subdir/sitemap.xml /var/www/html/sitemap.xml

# Установить права 644 и владельца www-data
chown www-data:www-data /var/www/html/sitemap.xml
chmod 644 /var/www/html/sitemap.xml

2. Проверить правила перезаписи

Apache (.htaccess)

# Отключить правила, которые могут блокировать sitemap
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sitemap\.xml$
RewriteRule ^ - [L]

Nginx

location = /sitemap.xml {
    try_files $uri =404;
}

3. Включить генерацию sitemap в CMS

WordPress (пример)

// В functions.php добавить
function generate_sitemap() {
    $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
    $sitemap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
    $posts = get_posts(['numberposts' => -1, 'post_status' => 'publish']);
    foreach ($posts as $post) {
        $sitemap .= '<url>';
        $sitemap .= '<loc>' . get_permalink($post->ID) . '</loc>';
        $sitemap .= '<lastmod>' . get_the_modified_time('c', $post->ID) . '</lastmod>';
        $sitemap .= '<changefreq>weekly</changefreq>';
        $sitemap .= '<priority>0.8</priority>';
        $sitemap .= '</url>';
    }
    $sitemap .= '</urlset>';
    file_put_contents(ABSPATH . 'sitemap.xml', $sitemap);
}
add_action('publish_post', 'generate_sitemap');

4. Проверить валидность XML

xmllint --noout sitemap.xml

Если ошибки, исправить синтаксис: закрыть теги, убрать лишние пробелы, убедиться, что все URL экранированы.

5. Обновить robots.txt

User-agent: *
Disallow:

Sitemap: https://example.com/sitemap.xml

6. Очистить кэш и проверить

# Очистить кэш веб‑сервера
systemctl restart nginx   # или apache2

# Проверить доступность
curl -I https://example.com/sitemap.xml

Если всё в порядке, поисковый робот сможет получить карту сайта и индексировать новые страницы.

Связанные

SEO КП · нужна помощь?

Не хотите разбираться сами?

Запустите технический аудит сайта за 5 минут — получите PDF-отчёт с разбором всех 64 параметров и конкретными точками роста. Или закажите комплексное SEO-продвижение сайта — починим всё это и возьмём на себя дальнейшую оптимизацию.

Запустить аудит за 199 ₽ Узнать про продвижение →