728 x 90

Como Criar um Sitemap no ASP.NET MVC 5: Guia Prático

Como Criar um Sitemap no ASP.NET MVC 5: Guia Prático

Os sitemaps são ferramentas essenciais para otimizar o SEO do seu site, ajudando os motores de busca a entenderem a estrutura das suas páginas e indexá-las de forma mais eficiente. Neste guia, vamos mostrar como você pode criar um sitemap em ASP.NET MVC 5 utilizando C#. Eu vou tentar ser o mais detalhista e didático

Os sitemaps são ferramentas essenciais para otimizar o SEO do seu site, ajudando os motores de busca a entenderem a estrutura das suas páginas e indexá-las de forma mais eficiente.

Neste guia, vamos mostrar como você pode criar um sitemap em ASP.NET MVC 5 utilizando C#.

Eu vou tentar ser o mais detalhista e didático possível, caso surja alguma dúvida, não deixe de deixar aqui nos comentários que estarei de alguma forma ajudando.

Vamos ao artigo.


O Que é um Sitemap?

Um sitemap é um arquivo XML que lista todas as URLs do seu site, além de informações adicionais, como:

  • Data da última modificação (lastmod);
  • Frequência de alteração (changefreq);
  • Prioridade da página (priority).

Os motores de busca, como Google e Bing, utilizam esses arquivos para identificar o conteúdo e priorizar a indexação das páginas.

Passo a Passo para Criar um Sitemap no ASP.NET MVC 5

Recentemente, precisei implementar uma solução para um site de um de meus clientes utilizando o CSharp.

O desafio em questão era que o projeto era um legado escrito em .NET Framework, o que não dava muitas opções a não ser escrever uma página utilizando o projeto ASP.NET MVC 5.

De certo que muitos podem achar que era melhor ter criado uma página e solução a parte, mas no momento não tinha como e o melhor cenário foi criar no próprio projeto.

Eu já falei anteriormente como lidar com projetos legados e os seus desafios. Se tiver interesse sobre o assunto, vou deixar aqui a referência para o artigo a manutenção em códigos legado e seus desafios.

1. Criando o Modelo para Representar as URLs

Vamos começar criando um modelo ou classe que represente as URLs dentro de nosso sitemap:

public class SitemapItem
{
    public string Loc { get; set; } // URL da página
    public DateTime? LastMod { get; set; } // Data da última modificação
    public string ChangeFreq { get; set; } // Frequência de alteração (ex.: daily, weekly)
    public double? Priority { get; set; } // Prioridade (0.0 a 1.0)
}

2. Criando a Action no Controller

Em seguida, crie um Controller dedicado ao sitemap. Ele será responsável por gerar o arquivo XML dinamicamente.

using System.Text;
using System.Web.Mvc;
using System.Xml.Linq;

public class SitemapController : Controller
{
    public ActionResult Index()
    {
        var sitemapItems = GetSitemapItems();

        // Gerar o XML
        XNamespace xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9";
        var sitemap = new XDocument(
            new XElement(xmlns + "urlset",
                from item in sitemapItems
                select new XElement(xmlns + "url",
                    new XElement(xmlns + "loc", item.Loc),
                    item.LastMod.HasValue
                        ? new XElement(xmlns + "lastmod", item.LastMod.Value.ToString("yyyy-MM-dd"))
                        : null,
                    !string.IsNullOrEmpty(item.ChangeFreq)
                        ? new XElement(xmlns + "changefreq", item.ChangeFreq)
                        : null,
                    item.Priority.HasValue
                        ? new XElement(xmlns + "priority", item.Priority.Value.ToString("F1"))
                        : null
                )
            )
        );

        // Retornar como XML
        return Content(sitemap.ToString(), "application/xml", Encoding.UTF8);
    }

    private IEnumerable<SitemapItem> GetSitemapItems()
    {
        // Exemplo de URLs no sitemap. Aqui você pode buscar do banco de dados ou definir estaticamente.
        return new List<SitemapItem>
        {
            new SitemapItem { Loc = Url.Action("Index", "Home", null, Request.Url.Scheme), LastMod = DateTime.Now, ChangeFreq = "daily", Priority = 1.0 },
            new SitemapItem { Loc = Url.Action("About", "Home", null, Request.Url.Scheme), LastMod = DateTime.Now.AddDays(-1), ChangeFreq = "weekly", Priority = 0.8 },
            new SitemapItem { Loc = Url.Action("Contact", "Home", null, Request.Url.Scheme), ChangeFreq = "monthly", Priority = 0.5 }
        };
    }
}

3. Configurando a Rota no RouteConfig

Adicione uma rota personalizada para que o sitemap seja acessado por meio da URL sitemap.xml.

routes.MapRoute(
    name: "Sitemap",
    url: "sitemap.xml",
    defaults: new { controller = "Sitemap", action = "Index" }
);

4. Testando e visualizando o sitemap

Depois de configurar a aplicação, você pode testar o sitemap acessando a URL:

https://seusite.com/sitemap.xml

Se tudo estiver configurado corretamente, você verá o seguinte resultado no navegador:

<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://seusite.com/</loc>
    <lastmod>2025-01-22</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://seusite.com/About</loc>
    <lastmod>2025-01-21</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://seusite.com/Contact</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
</urlset>

Criar um sitemap no ASP.NET MVC 5 é uma tarefa simples que pode ter um grande impacto no desempenho do seu site nos motores de busca.

Com as dicas e o código fornecido, você está pronto para implementar essa funcionalidade e otimizar o SEO do seu site.

Se você tiver dúvidas ou melhorias, deixe seu comentário abaixo. Até a próxima!

Posts Carousel

Leave a Comment

Your email address will not be published. Required fields are marked with *

Latest Posts

Top Authors

Most Commented

Featured Videos