Blog corporativo

Artigos, scripts e dicas postados pelos colaboradores. Não são postados scritps relacionados à trabalhos feitos para clientes.

Gerando sitemap dinâmicamente com PHP

Todos devem saber que o sitemap é uma ferramenta extremamente usada pelos robôs de busca (google, yahoo, etc...). O próprio nome denota o que ele é, é o mapa do site, ou seja, tudo que existe no site, e que deve ser indexado deve ser constar no sitemap.

Óbvio que se você não tiver um sitemap seu site será indexado também, mas no mundo atual quanto mais você facilitar a vida dos robôs de busca, melhor você será recompensando.

Aqui vou mostrar um forma simples de gerar o sitemap de forma dinâmica com PHP, MySQL e usando o .htaccess. Vou usar como base o arquivo que gera o XML do sitemap do nosso site, você pode ver ele aqui.

Tudo que é cadastrado no site, principalmente na parte do blog, entra automaticamente no XML do sitemap, no caso esse arquivo sitemap.xml sequer existe no servidor, ele é apenas uma máscara feita com o uso do mod_rewrite do apache, isso usando o .htaccess.

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

$hoje = date('Y-m-d');
?>

<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
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">
<url>
<loc>http://www.edgarserra.com/</loc>
  <lastmod><?php echo $hoje;?></lastmod>
  <priority>1.00</priority>
  <changefreq>daily</changefreq>
</url>
<url>
  <loc>http://www.edgarserra.com/index.jsp</loc>
  <lastmod><?php echo $hoje;?></lastmod>
  <priority>0.80</priority>
  <changefreq>daily</changefreq>
</url>
<url>
  <loc>http://www.edgarserra.com/quem-somos.jsp</loc>
  <lastmod><?php echo $hoje;?></lastmod>
  <priority>0.80</priority>
  <changefreq>daily</changefreq>
</url>
<url>
  <loc>http://www.edgarserra.com/servicos.jsp</loc>
  <lastmod><?php echo $hoje;?></lastmod>
  <priority>0.80</priority>
  <changefreq>daily</changefreq>
</url>
<url>
  <loc>http://www.edgarserra.com/blog.jsp</loc>
  <lastmod><?php echo $hoje;?></lastmod>
  <priority>0.80</priority>
  <changefreq>daily</changefreq>
</url>
<url>
  <loc>http://www.edgarserra.com/arquivo-do-blog.jsp</loc>
  <lastmod><?php echo $hoje;?></lastmod>
  <priority>0.80</priority>
  <changefreq>daily</changefreq>
</url>
<url>
  <loc>http://www.edgarserra.com/orcamento.jsp</loc>
  <lastmod><?php echo $hoje;?></lastmod>
  <priority>0.80</priority>
  <changefreq>daily</changefreq>
</url>
<url>
  <loc>http://www.edgarserra.com/contato.jsp</loc>
  <lastmod><?php echo $hoje;?></lastmod>
  <priority>0.80</priority>
  <changefreq>daily</changefreq>
</url>
	<?php
	
/*
Conecta ao banco de dados... essa parte você acha fácil na internet.
*/
$sql_tabela = mysql_query("SELECT id,titulo FROM TABELA ORDER BY id DESC");

	while($tabela = mysql_fetch_assoc($sql_tabela)){
echo "<url>
		<loc>http://www.edgarserra.com/".$tabela['id']."/".$tabela['titulo'].".jsp</loc>
		<lastmod>".$hoje."</lastmod>
		<changefreq>daily</changefreq>
		<priority>0.6</priority>
	</url>";
}
	?>
</urlset>


Como disse acima, no servidor de fato não existe nenhum arquivo chamado sitemap.xml, usamos o mod_rewrite para "criar" esse arquivo artificial, para isso basta:

RewriteEngine On
RewriteRule ^sitemap\.xml$ gera_xml.php [L]

Copie isso e cole em um arquivo chamado .htaccess (note que ele não tem nome mesmo, é só extensão, você pode renomear ele assim no FTP do seu site, pois no Windows você não conseguirá criar um arquivo sem nome. Esse arquivo deve ser jogado na raiz do seu site.

No caso quando for requisitado o sitemap.xml ele vai redirecionar a requisição para o gera_xml.php, o importante é você colocar o código que gera o xml dentro de um arquivo chamado gera_xml.php, ou alterar esse nome no código passado acima.

A idéia desse pequeno artigo foi mostrar como é simples fazer um sitemap dinâmico, é claro que ele terá que ser adapatado para a realidade do seu site, mas agora é com você.