首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP网站地图索引

PHP网站地图索引
EN

Stack Overflow用户
提问于 2010-08-30 00:54:20
回答 2查看 1.8K关注 0票数 1

我的sitemap非常庞大,我必须将其分解成一个sitemap索引,我已经这样做了,列出的sitemap是sitmap-1.xml、sitemap-2.xml等。

我想有一个网站地图文件,这是基于网站地图号码选择的ie。sitemap-1.xml将转到sitemap文件,并列出1- 30,000个链接,如果选择sitemap-2,将显示30,000 - 60,000等...

如何检查选择了哪个网站地图编号,以及如何命名文件?

EN

回答 2

Stack Overflow用户

发布于 2010-08-30 02:01:11

为什么不像以前那样命名为"sitemap-1“和"sitemap-2”,然后在sitemap.php文件中执行类似的操作:

代码语言:javascript
复制
$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中添加一个条目之外:

代码语言:javascript
复制
RewriteRule sitemap-([0-9]+).xml$ sitemap.php?number=$1

您还可以使用SQL查询的边界:

代码语言:javascript
复制
$query = "SELECT * FROM table LIMIT ".(($number - 1) * $entries_per_page).", ".$entries_per_page;

我使用了类似的东西,除此之外还有一个sitemap_index.php文件,看起来像这样:

代码语言:javascript
复制
<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")。

票数 2
EN

Stack Overflow用户

发布于 2010-08-30 02:54:12

听起来你需要一个原始的链接索引文档?如下所示:

代码语言:javascript
复制
<site-idx>
  <sub href="sitemap-1.xml"/>
  <sub href="sitemap-2.xml"/>
  <sub href="sitemap-3.xml"/>
</site-idx>

然后,您可以编写一个程序,该程序接受一个数字作为输入,假设每个文件有多少个条目,然后加载正确的索引?或者,您可以指定索引文件中每个子文件中的条目数:

代码语言:javascript
复制
<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,它占用的内存要少得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3595660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档