动态内容的站点地图?

时间:2009-08-23 01:52:47

标签: php codeigniter search-engine sitemap

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

更新,以帮助回答我的问题,我创建的网站类型是一个公共博客类型的网站,用户发布文章。

Update2 :只是详细说明我的困惑:我可能无法准确理解网站地图的结构。例如,在像stackoverflow这样的网站上,当用户添加新问题(从而创建新页面)时,站点地图是否会更改并需要重新提交?像这样的网站甚至有一个站点地图有多重要?

6 个答案:

答案 0 :(得分:5)

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

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

生成站点地图的配方over here

答案 1 :(得分:2)

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

我们解决此问题的方法是构建一个充当Doctrine嵌套集的Sitemap模型。它基本上只是一些字段,如id,parent_id,title,uri,created,updated。如果需要,您可以添加更多字段,但这是基本前提。

然后我们使用Zend_Navigation将此树渲染到网站的菜单中。

Zend_Navigation还有一个自动生成XML站点地图的辅助方法,所以我们有一个控制器和视图,用于渲染该XML文档。

然后我们编写了一个Zend Action Controller插件,它监视站点地图控制器,当进行更新时,它会检查上次更新,并向Google发出站点地图已更新的信息。

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

如果CI中没有站点地图视图助手,您可以使用Zend Navigation类,因为Zend松散地分离。

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

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

答案 2 :(得分:2)

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

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

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

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

答案 3 :(得分:0)

根据您创建的网站类型,您可以通过多种方式进行讨论
例如,如果您正在制作新闻网站。你可以有一个页面链接到每篇新闻文章的永久链接。如果您可以详细说明哪种网站/其内容,我们可以提供更好的帮助。

答案 4 :(得分:0)

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

不要对页面的URL感到困惑,因为它可以通过多种方法进行更改。

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

所以每分钟都会为stackoverflow网站生成一个新的站点地图。

更新:Robert This answer解释了当向系统添加新问题时Stack Overflow的站点地图会发生什么。

答案 5 :(得分:0)

最佳解决方案是在.htaccess

之后将以下行添加到您的apache RewriteEngine On文件中
RewriteRule ^sitemap\.xml$ sitemap.php [L]

然后只需在根文件夹中有一个文件sitemap.php,该文件通常可以通过http://yoursite.com/sitemap.xml访问,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> 应该是这样的

graphql

它有效:)