Localização Blazor
Construa URLs culturais amigáveis para SEO no Blazor
Use rotas /en-us/nome-da-pagina/ para acesso direto.
O objetivo é um sistema de URL estável, não apenas texto traduzido.
Por que isso importa
URLs culturais ajudam pessoas e crawlers a escolher a página certa
Um cookie pode alterar o idioma após uma requisição.
Uma URL pode ser compartilhada, rastreada, indexada, armazenada em cache e auditada.
Rotas culturais se encaixam em artigos públicos, páginas de produtos, docs e ferramentas.
Sumário
Conceitos principais
Separe idioma, região, rota e versão do conteúdo
Mantenha esses termos separados antes de escrever o código de roteamento.
Use idioma para texto legível.
Inglês, alemão e francês são opções de idioma.
Use região para intenção local.
en-us e en-gb podem precisar de ortografia, exemplos e ofertas diferentes.
Use rotas para descoberta.
Uma rota como /de-de/blazor/ oferece a todos um endereço estável.
Use o conteúdo quando a intenção for diferente.
Escreva uma versão separada quando notas legais, preços ou exemplos forem diferentes.
Sinais de SEO
Conecte rotas culturais com regras canonical e hreflang
A URL é apenas um sinal. Os metadados devem corresponder a ela.
Canonical URL
Aponte cada página localizada para sua própria URL preferida.
hreflang
Vincule todas as versões reais de idioma ou região com hreflang.
x-default
Use x-default para um seletor neutro ou fallback global.
BreadcrumbList
Mantenha os breadcrumbs conscientes da cultura para que o schema corresponda à hierarquia de rotas visível.
Referência relacionada
Metadados e schema devem contar a mesma história
Use estes guias ao adicionar metadados e dados estruturados.
Implementação
Construa as regras de rota em pequenas partes
Comece com um serviço, um redirecionamento e um padrão de rota.
Contrato do serviço de cultura
Centralize as culturas suportadas e o parsing de URL.
public sealed class CultureRouteService
{
private static readonly string[] SupportedCultures = ["en-us", "en-gb", "de-de"];
public string ResolveCulture(string? routeCulture)
{
if (SupportedCultures.Contains(routeCulture, StringComparer.OrdinalIgnoreCase))
{
return routeCulture!.ToLowerInvariant();
}
return "en-us";
}
}Ponto de extremidade de redirecionamento de cultura
Defina o cookie e depois retorne para a rota de cultura.
[Route("culture")]
public sealed class CultureController : Controller
{
[HttpGet("set")]
public IActionResult Set(string culture, string returnUrl)
{
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)));
return LocalRedirect(returnUrl);
}
}Configuração do programa
Registre a localização antes de mapear as rotas dos controladores.
builder.Services.AddLocalization();
builder.Services.AddScoped<CultureRouteService>();
app.UseRequestLocalization(options =>
{
options.SetDefaultCulture("en-us");
options.AddSupportedCultures("en-us", "en-gb", "de-de");
options.AddSupportedUICultures("en-us", "en-gb", "de-de");
});
app.MapControllers();Rota da página
Faça o segmento de cultura parte de toda rota pública.
@page "/{Culture}/pricing/"
<a href="@BuildCultureLink(PageLinks.Blazor)">
Blazor guides
</a>Realidade das rotas
Blazor pode localizar conteúdo, não templates de rota
O segmento de cultura muda; o slug permanece estável. Slugs traduzidos precisam de sua própria camada de roteamento.
Rotas Razor @page usam templates literais. Localização traduz apenas o texto da página. PageLinks e strings @page permanecem sob controle do código.
/de-de/seo-friendly-culture-links-in-blazor/
Só a cultura muda.
/de-de/seo-freundliche-culture-links-in-blazor/
Slugs traduzidos precisam de uma tabela de slugs. Eles também precisam de redirecionamentos, canonicals, sitemaps e hreflang.
BuildCultureLink(PageLinks.Blazor)
BuildCultureLink muda a cultura, não os slugs.
Erros comuns
A maioria dos bugs de URL de cultura são incompatibilidades de roteamento
O template da rota raramente é a parte difícil.
Mantenha todos os sinais alinhados após uma mudança de idioma.
Não redirecione uma cultura válida para sempre.
Normalize a cultura uma vez, depois pare quando a rota já corresponder.
Não tente adivinhar a cultura padrão tardiamente.
Use uma cultura padrão para roteamento, metadados, sitemap e lógica de fallback.
Não permita que duas páginas tenham o mesmo slug de cultura.
Links de página centralizados facilitam revisar colisões acidentais de rotas.
Não oculte rotas de idioma apenas no estado do cliente.
Crawlers e usuários precisam de valores reais de href antes do Blazor se tornar interativo.
Validação
Verifique cada rota de cultura antes de publicar
Valide o HTML renderizado, não apenas o código Razor.
- Abra pelo menos uma URL para cada cultura suportada.
- Verifique as tags canonical e hreflang no código-fonte renderizado.
- Confirme que o schema FAQ corresponde às perguntas e respostas visíveis.
- Rastreie redirecionamentos para que culturas não suportadas não entrem em loop.
- Revise títulos traduzidos, descrições, texto H1 e palavras-chave.
Perguntas frequentes
URLs de cultura são melhores que cookies para SEO?
Sim. URLs de cultura criam páginas rastreáveis e compartilháveis.
Qual é a diferença entre idioma e região?
Idioma controla o texto. Região controla exemplos e ofertas locais.
Ainda preciso de hreflang com rotas de cultura?
Sim. Rotas de cultura deixam URLs claras. hreflang as conecta.
Para onde o canonical deve apontar em páginas localizadas?
Normalmente, o canonical aponta para a mesma página localizada.
Como evitar loops de redirecionamento?
Redirecione culturas não suportadas uma vez, depois pare.