我的sitemap非常庞大,我必须将其分解成一个sitemap索引,我已经这样做了,列出的sitemap是sitmap-1.xml、sitemap-2.xml等。
我想有一个网站地图文件,这是基于网站地图号码选择的ie。sitemap-1.xml将转到sitemap文件,并列出1- 30,000个链接,如果选择sitemap-2,将显示30,000 - 60,000等...
如何检查选择了哪个网站地图编号,以及如何命名文件?
发布于 2010-08-30 02:01:11
为什么不像以前那样命名为"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个条目的网站地图,你可以将你的网站地图分成更小的部分。对于for循环,只需使用ceil($total_entries/$entries_per_page) (替换"6")。
发布于 2010-08-30 02:54:12
听起来你需要一个原始的链接索引文档?如下所示:
<site-idx>
<sub href="sitemap-1.xml"/>
<sub href="sitemap-2.xml"/>
<sub href="sitemap-3.xml"/>
</site-idx>然后,您可以编写一个程序,该程序接受一个数字作为输入,假设每个文件有多少个条目,然后加载正确的索引?或者,您可以指定索引文件中每个子文件中的条目数:
<site-idx>
<sub href="sitemap-1.xml" num="1000"/>
<sub href="sitemap-2.xml" num="1010"/>
<sub href="sitemap-3.xml" num="1101"/>
</site-idx>您可以利用XInclude来加载子文档,对于较大的XML文件,我建议在PHP中使用XMLReader,它占用的内存要少得多。
https://stackoverflow.com/questions/3595660
复制相似问题