Leobreda.Net
HTML | DHTML | JavaScript | DOM | Ajax | Asp | Asp.net | PHP | Ms. SQL | MySQL
Pesquisa por: bing
26 de julho de 2009 14:11356 visitas
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 & "')"
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.