Если в качестве фронтэнда для сайта на WordPress вы используете nginx, и sitemap.xml у вас создается плагином динамически генерирующим сайтмапу, то Вам необходимо обратить внимание на некоторые особенности при конфигурировании nginx, чтобы не получить ответ 404 вместо ожидаемого sitemap.xml.
Первое, проверяем что Вы не заставляете nginx брать xml файлы напрямую, минуя бэкэнд.
Если в строке location у Вас присутствует xml, то nginx обратившись по пути /var/web/moisait.ru/www/sitemap.xml и не обнаружив его там, отдаст клиенту 404 ошибку.
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ { root /var/web/moisait.ru/www/; }
Проверяем, чтобы правильно передавались аргументы url
location / { try_files $uri $uri/ /index.php?$args; }
Однако бывают случаи, когда на Вашем сайте присутствуют xml файлы помимо сайтмапы, которые вы хотите кэшировать, либо отдавать напрямую nginx-ом, тогда лучше всего прописать несколько правил rewrite rule для nginx, чтобы ваш sitemap.xml выводился корректно.
Правила rewrite для плагина Yoast’s WordPress-SEO
location ~ ([^/]*)sitemap(.*)\.x(m|s)l$ { rewrite ^/sitemap\.xml$ /sitemap_index.xml permanent; rewrite ^/sitemap\.xsl$ /index.php?xsl=1 last; rewrite ^/sitemap_index\.xml$ /index.php?sitemap=1 last; rewrite ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last; }
Правила rewrite для плагина XML Sitemap & Google News feeds
location ~ ([^/]*)sitemap(.*)\.x(m|s)l$ { rewrite ^/sitemap\.xml$ /?feed=sitemap last; rewrite ^/sitemap-home\.xml$ /?feed=sitemap-home last; rewrite ^/sitemap-posttype-post\.xml$ /?feed=sitemap-posttype-post last; rewrite ^/sitemap-posttype-page\.xml$ /?feed=sitemap-posttype-page last; rewrite ^/sitemap-taxonomy-category\.xml$ /?feed=sitemap-taxonomy-category last; }comments powered by HyperComments