9

我正在使用 codeigniter (mvc) 和 php 开发一个 webapp。我想知道当我的联系人是动态的时如何为搜索引擎创建站点地图?是否有最佳实践,或者有没有办法自动化这个过程?我问是因为内容会不断快速添加,所以我希望站点地图是最新的。谢谢

更新:为了帮助回答我的问题,我正在创建的网站类型是用户发布文章的公共博客类型网站。

Update2:只是为了详细说明我的困惑:我可能不完全了解站点地图的结构。例如,在像 stackoverflow 这样的网站上,当用户添加新问题(因此,创建新页面)时,站点地图是否会更改并需要重新提交?对于像这样的网站来说,拥有站点地图有多重要?

4

6 回答 6

6

即使您的内容是动态的,您也希望站点地图是静态的。当然,如果您愿意,可以每天更新一次站点地图,或者在您发布新博客条目时更新它……但不要尝试在请求时创建它。那将是一场性能噩梦。

我认为 Stackoverflow 的站点地图每天都会更新。它包含 50,000 个最近更改的页面。站点地图有助于 SEO(搜索引擎优化)。

站点地图生成方法在这里

于 2009-09-04T22:23:53.903 回答
2

假设您正在尝试创建一个 xml 站点地图,而不是 html 站点地图?

我还没有这样做,并且想尽快尝试一下,但我要做的是:设置一个调用 example.com/index.php/sitemap 之类的路径的 cron 作业。然后站点地图控制器中的索引函数将运行查询以选择所有帖子的所有标题+为这些条目构建完整网址所需的一切,并且由于它是站点地图协议中的必需元素,因此上次更新条目时. 如果您的数据库中没有此字段,则可能必须添加它。

然后它只是循环遍历结果并写出具有适当结构的 xml 文件的问题。在循环时,您还必须根据每个条目确定优先级、changefreq 和所有其他元素。

我也一直在查看http://www.xml-sitemaps.com/的付费版本,除了为您设置 cron 之外,它应该可以做所有事情,价格相当不错,并且可以在您自己的服务器上运行。我不认为你可以自己开发这个价值 19,99 美元的时间。而且,这个应用程序还通知搜索引擎新的内容,我还没有在上面概述的方法。

于 2009-08-24T10:21:24.087 回答
2

我和你的情况类似,除了我在 Zend Framework 和 Doctrine 中开发而不是 Code Igniter。

我们解决这个问题的方法是构建一个站点地图模型,作为一个 Doctrine Nested Set。它基本上只是几个字段,例如 id、parent_id、title、uri、created、updated。如果需要,您可以添加更多字段,但这是基本前提。

然后我们使用 Zend_Navigation 将此树渲染为站点的菜单。

Zend_Navigation 也有一个自动生成 XML 站点地图的辅助方法,所以我们有一个控制器和视图来设置来呈现那个 XML 文档。

然后我们编写了一个 Zend Action Controller 插件,它监控站点地图控制器,当进行更新时,它会检查上次更新,并 ping 谷歌网站地图已更新。

我想,所有这些概念都可以很容易地移植到 CI 中。

如果 CI 中没有站点地图视图助手,您可能可以使用 Zend Navigation 类,因为 Zend 是松散解耦的。

或者您可以使用 CI 生成 xml 文档,使用此处的站点地图标准。

http://www.sitemaps.org/protocol.php

于 2009-08-23T02:11:44.273 回答
0

站点地图结构中的更新频率参数告诉搜索引擎网页更新的频率。

不要与页面的 URL 混淆,因为它可以通过多种方法进行更改。

对于stackoverflow,它可能是 questions.php?id=1317539这个页面,例如,questions.php 的更新频率设置为一分钟

因此,每分钟都会为 stackoverflow 网站生成一个新的站点地图。

更新:罗伯特的这个答案解释了当向系统添加新问题时 Stack Overflow 的站点地图会发生什么。

于 2012-09-24T08:49:44.087 回答
0

根据您创建的网站类型,您可以通过多种方式进行操作。

例如,如果您正在制作一个新闻网站。您可以有一个页面链接到每篇新闻文章的永久链接。如果你能详细说明什么样的网站/它的内容,我们可以提供更好的帮助。

于 2009-08-23T01:57:30.017 回答
0

最好的解决方案是将以下行添加到您的 apache.htaccess文件中RewriteEngine On

RewriteRule ^sitemap\.xml$ sitemap.php [L]

然后只需sitemap.php在您的根文件夹中有一个文件,该文件通常可以通过 访问http://yoursite.com/sitemap.xml,这是所有搜索引擎首先搜索的默认 URL。

文件sitemap.php应该是这样的

<?php header('Content-type: application/xml; charset=utf-8') ?>
<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?>
<?include_once('./myVariables.php'); ?>

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc><?php echo $URL1; ?></loc>
    <lastmod>2005-01-01</lastmod>
    <changefreq>monthly</changefreq>
  </url>
  <url>
    <loc><?php echo $URL2; ?></loc>
    <lastmod>2005-01-01</lastmod>
    <changefreq>monthly</changefreq>
  </url>
</urlset> 

有用 :)

于 2017-07-15T20:20:32.303 回答