Почему бы не назвать их так, как вы называли "sitemap-1" и "sitemap-2", и внутри вы делаете что-то подобное в sitemap.php
файле:
$number = $_GET['number'];
$entries_per_page = 30000;
for($i = ($number - 1) * $entries_per_page; $i < $number * $entries_per_page; $i++){
// print out the values
}
В дополнение к этому добавьтезапись в вашем .htaccess, как это:
RewriteRule sitemap-([0-9]+).xml$ sitemap.php?number=$1
Вы также можете использовать границы для вашего запроса SQL:
$query = "SELECT * FROM table LIMIT ".(($number - 1) * $entries_per_page).", ".$entries_per_page;
Я использую что-то подобное, и в дополнение к этому sitemap_index.phpфайл выглядит следующим образом:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<? for($i = 1; $i <= 6; $i++) : ?>
<sitemap>
<loc><?php echo ROOT_PATH?>sitemap_<?= $i ?>.xml</loc>
<lastmod><?php echo date('Y-m-d')?></lastmod>
</sitemap>
<? endfor ?>
</sitemapindex>
И так как большинство поисковых систем любят карты сайта с максимум 1000 записей, вы можете разделить карту сайта на еще более мелкие части.И просто используйте ceil ($ total_entries / $ records_per_page) для цикла for (заменив «6»).