2012-06-25 81 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