Sitemap dalam sebuah situs akan menjadi media untuk memberitau search engine url mana saja yang tersedia di dalam situs tersebut dan bisa di index oleh search engine bersangkutan.

Jika anda seperti perusahaan saya, GLC Consulting, yang memilih membuat aplikasi web sendiri dibandingkan membeli ataupun menggunakan Content Management Systems (CMS) opensource yang bebas dan banyak tersedia, maka solusi ini bisa anda terapkan.

Karena tools kami adalah Zend Framework, maka tulisan ini spesifik terhadap framework ini.

Sitemap yang benar diharapkan memiliki struktur seperti berikut

<?xml version="1.0" encoding="utf-8"?>

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://example.com/</loc>
        <lastmod>2012-08-17</lastmod>
        <changefreq>daily</changefreq>
        <priority>0.8</priority>
    </url>
</urlset>

Untuk itu saya buat sebuah controller..

<?php

class Default_SitemapController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
        $this->_helper->viewRenderer->setNoRender();
        $this->_helper->layout->disableLayout();
        
        $xml = new DOMDocument('1.0', 'utf-8');
        
        $root = $xml->createElement( "urlset" ); 
        
        $xml->appendChild( $root ); 
        
        $attr1 = $xml->createAttribute('xmlns:xsi');
        $attr1->value = 'http://www.w3.org/2001/XMLSchema-instance';
        $root->appendChild($attr1);
        
        $attr2 = $xml->createAttribute('xsi:schemaLocation');
        $attr2->value = 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd';
        $root->appendChild($attr2);
        
        $attr3 = $xml->createAttribute('xmlns');
        $attr3->value = 'http://www.sitemaps.org/schemas/sitemap/0.9';
        $root->appendChild($attr3);
        
        // Dalam contoh ini saya hardcode, implementasinya anda bisa panggil dari 
        // database dan return data sebagai array

        $page = array(
            array(
                'url' => 'blog.html',
                'freq' => 'daily',
                'mod' => '2012-08-17 8:00:00'
            ),
            array(
                'url' => 'about-us.html',
                'freq' => 'yearly',
                'mod' => '2012-08-17 8:00:00'
            ),
            array(
                'url' => 'services.html',
                'freq' => 'yearly',
                'mod' => '2012-08-17 8:00:00'
            ),
            array(
                'url' => 'contact.html',
                'freq' => 'never',
                'mod' => '2012-08-17 8:00:00'
            )
        );
        
        foreach ($page AS $item){
            $body = $xml->createElement( "url" ); 
            $body->appendChild($xml->createElement('loc', 'http:/www.contoh.co.id/' . $item[url]));
            $body->appendChild($xml->createElement('lastmod', date("c", strtotime($item[mod]))));
            $body->appendChild($xml->createElement('changefreq', $item[freq]));
            $body->appendChild($xml->createElement('priority', '1.0'));
            $root->appendChild($body);
        }
        
        $output = $xml->saveXML();
        
        $this->_response->setHeader('Content-Type', 'text/xml; charset=utf-8')->setBody($output);   
    }
}

Dari sini anda sudah bisa tes sitemap dengan mengarahkan browser pada controller tersebut. Jika sudah puas.. anda bisa submit url tersebut ke Google melalui Google Webmaster Tools