sitemap.xml не работает: проверка и исправление
Карта сайта возвращает 404, не обновляется, содержит битые ссылки. Чек-лист правки.
Симптом
- При запросе
https://example.com/sitemap.xmlв браузере появляется ошибка 404 Not Found. - Сайтмап загружается, но в нём отсутствуют последние URL‑адреса, добавленные в CMS.
- В sitemap присутствуют ссылки, которые больше не существуют (404 при переходе).
- Поисковые роботы не индексируют новые страницы, хотя они доступны по прямому URL.
- В логах веб‑сервера видны запросы к
sitemap.xmlс кодом 404 или 500.
Причина
- Неправильный путь к файлу – файл
sitemap.xmlнаходится не в корне сайта, а в поддиректории, либо он переименован. - Неправильные правила в
.htaccess/nginx– правило перезаписи блокирует доступ к sitemap. - Файл не генерируется – CMS (WordPress, Drupal, Joomla и др.) не создает sitemap из‑за отключенного модуля или ошибки в конфигурации.
- Проблемы с правами доступа – веб‑сервер не может читать файл из‑за неверных прав (chmod, owner).
- Неправильный формат XML – синтаксические ошибки делают файл недоступным для поисковых систем.
- Проблемы с кэшированием – старый 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-продвижение сайта — починим всё это и возьмём на себя дальнейшую оптимизацию.