2012-06-25 44 views
18

我需要生成一个申请一个网站地图。我找到了一些库,但都是过时的,并且有bug。站点地图生成与笨

我真的需要这个独立的库?

我想知道在Codeigniter中生成站点地图的最佳方法。

回答

49

你可以使用我的代码:

控制器/ seo.php

Class Seo extends CI_Controller { 

    function sitemap() 
    { 

     $data = "";//select urls from DB to Array 
     header("Content-Type: text/xml;charset=iso-8859-1"); 
     $this->load->view("sitemap",$data); 
    } 
} 

的意见/ sitemap.php

<?= '<?xml version="1.0" encoding="UTF-8" ?>' ?> 

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
     <loc><?= base_url();?></loc> 
     <priority>1.0</priority> 
    </url> 

    <!-- My code is looking quite different, but the principle is similar --> 
    <?php foreach($data as $url) { ?> 
    <url> 
     <loc><?= base_url().$url ?></loc> 
     <priority>0.5</priority> 
    </url> 
    <?php } ?> 

</urlset> 

添加行的config/routes.php文件

$route['seo/sitemap\.xml'] = "seo/sitemap"; 

很抱歉,如果有一些呃在代码中漫游,我特别为你而做。 如果有错误,您可以通过理解原理轻松修复它们。

+0

谢谢!很好,很容易:) –

+1

如果你有很多页面/文章,那么多个站点地图呢? – starikovs

+2

为什么这个部分:<?XML版本= “1.0” 编码= “UTF-8”?>'在回波? –

13

必须设置标题:

<?php header('Content-type: text/xml'); ?> 
<?= '<?xml version="1.0" encoding="UTF-8" ?>' ?> 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
    <url> 
     <loc><?= base_url();?></loc> 
     <priority>1.0</priority> 
    </url> 
    <!-- My code is looking quite different, but the principle is similar --> 
    <?php foreach($data as $url) { ?> 
    <url> 
     <loc><?= base_url().$url ?></loc> 
     <priority>0.5</priority> 
    </url> 
    <?php } ?> 
</urlset> 
3

我们强烈建议您到网站地图的链接添加到的robots.txt是这样的:

Sitemap: http://www.yoursite.com/seo/sitemap