Leobreda.net

Web, .Net,
SQL, Cloud...

Monte um sitemap.xml dinâmico

Técnica permite manter a indexação de seu site atualizada e com bons resultados em sites de busca

Um bom mapa do site (sitemap.xml) armazena TODAS as urls de seu site, de modo que algum motor de busca (Google, Bing Yahoo!, etc) possa acessar tal arquivo e localizar quais páginas de seu site estará visível em alguma busca.

O meu mapa do site atual é este aqui:

<?xml version="1.0" encoding="utf-8"?>
<!-- Autor="Leonardo Breda"-->
<!-- Gerador="http://www.leobreda.net"-->
<!-- Paginas encontradas: "71"-->
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
  <loc>http://www.leobreda.net/</loc>
</url>

<url>
  <loc>http://www.leobreda.net/artigos/</loc>
</url>

<url>
  <loc>http://www.leobreda.net/artigos/asp-evitando-o-codigo-spaghetti-13.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/artigos/criando-urls-amigaveis-20.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/artigos/desativando-programas-na-inicializacao-do-windows-15.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/contato.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/curriculum.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/game-design.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/tags/ajax.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/tags/asp.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/tags/aspnet.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/tags/banco-de-dados.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/tags/google.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/tags/seo.html</loc>
</url>

<url>
  <loc>http://www.leobreda.net/tags/serverhtmlencode.html</loc>
</url>

</urlset>

Instruções

1. Seu site deverá ter suporte ao componente MOD REWRITE, com a seguinte regra no arquivo .htaccess (ou httpd.ini):

RewriteRule ^/sitemap.xml$ /sitemap.xml.asp

2. É necessário um Banco de Dados (Ms. SQL ou MySQL) para armazenar os endereços de seu site. Como o MySQL é gratuito e todos os servidores possuem este acesso:

CREATE TABLE TB_SITEMAP

(

  SITEMAP_COD INT AUTO_INCREMENT,

  URL VARCHAR(200),

  PRIMARY KEY (SITEMAP_COD)

 );

3. Abra TODAS as URLS de seu site e insira o seguinte código. Se você utiliza INCLUDES, Classes, melhor ainda!

<%

PAGINA_URL = Replace(request.ServerVariables("HTTP_X_REWRITE_URL"), "'", "''")
   strSQL = "SELECT SITEMAP_COD FROM TB_SITEMAP WHERE URL='" & PAGINA_URL & "'"
   call abreConexao : set objRecordset=createObject("ADODB.Recordset") : objRecordset.Open strSQL, objConexao
      if objRecordset.EOF Then

          objRecordset.Close : set objrecordset=Nothing : call fechaConexao

          strSQL = "INSERT INTO TB_SITEMAP (URL) VALUES ('" & PAGINA_URL & "')"

          executaConexao(strSQL)

      Else

          objRecordset.Close : set objrecordset=Nothing : call call fechaConexao

      End If

 4. Crie um arquivo chamado sitemap.xml.asp...

<%
  response.ContentType="text/xml"

  strSQL="SELECT URL FROM TB_SITEMAP ORDER BY URL"
  call abreConexao: set obJRecordset=createObject("ADODB.Recordset") : objRecordset.cursorLocation=3 : objRecordset.Open strSQL, objConexao
    i=0
    Redim SITEMAP(objRecordset.RecordCount-1)
    while NOT objRecordset.EOF
      SITEMAP(i) = objRecordset("URL")
      i=i+1
    objRecordset.moveNext : wend : objRecordset.Close : set objRecordset=Nothing : call fechaConexao

%><?xml version="1.0" encoding="utf-8"?>
<!-- Autor="Leonardo Breda"-->
<!-- Gerador="http://www.leobreda.net"-->
<!-- Paginas encontradas: "<%=uBound(SITEMAP)+1%>"-->
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">

<%for i=0 to uBound(SITEMAP)%>
<url>
  <loc>http://<%=Servervariables("HTTP_HOST")%>/<%=server.HTMLEncode(SITEMAP(i))%></loc>
</url>
<%next : erase SITEMAP%>
</urlset>

 5. Rode algumas páginas, e agora acesse o arquivo sitemap.xml, verificando se indexou corretamente suas URLs...

 

Quanto ao meu site, possuo um painel de controle na qual posso gerenciar todo o meu sitemap da seguinte maneira:

 

Quando a estrela está cinza, significa que tal url não será publicada no sitemap; clico em tal estrela, e via Ajax, a url é publicada, além da estrela mudar de cor.

Ao clicar na imagem X em vermelho, posso excluir tal url do índice. Personalizando desta maneira, não há necessidade de ir manualmente no banco de dados e deletar tal registro.

 




Acessar todos os artigos »