Alguns dias atrás, eu inconscientemente tomei a decisão de remover datas do URL da postagem no meu site desenvolvido na plataforma BlogEngine.net, um CMS de código aberto em Asp.net.
A funcionalidade disponível em configurações na secção Outros ajustes, permite que você adicione ou remover datas de URLs de postagem simplesmente marcando ou desmarcando o item Adicione a data ao link Postagem.
Infelizmente para mim, esta operação de remoção teve um impacto negativo e sérios danos colaterais de SEO para SoulTricks.
Como remover a data do URL da postagem
Enquanto o WordPress gerencia a exclusão da data da URL das postagens com diferentes plug-ins, o BlogEngine não fornece uma função ad hoc que ajuda o usuário a resolver esse problema, e isso cria um certo incômodo para os motores de busca como o Google, que interpretam o seus artigos como artigos duplicados, mesmo se você tiver fornecido um mapa do site válido e com novos URLs. A este respeito, dê uma olhada em Pesquisar no Google na secção Aparência em Pesquisa> Aprimoramento de HTML> Título de metatag duplicado, para mostrar que as postagens duplicadas são exatamente aquelas com data e sem data. Por exemplo, algo assim:
Como digitar no teclado do seu PC sem olhar
/post/2016/05/14/come-scrivere-sulla-tastiera-del-pc-senza-guardare.aspx
/ post / 2016/05/14 / como escrever no teclado do pc sem olhar
Esta situação tem causado uma perda de posicionamento dos meus artigos nos motores de busca e uma queda evidente nas visitas diárias. Nesse ínterim, tentei pesquisar na Internet a solução para este problema como remover datas do URL da postagem em Asp.net ou C # e como fazer um redirecionamento 301 permanente. Mas absolutamente nada. Portanto?
Aqui está como resolvi no BlogEngine.net:
- Baixou a versão mais recente do Visual Studio na versão gratuita
- Baixou o arquivo BlogEngine.net (fonte) da versão que você está usando.
- Abriu a versão BlogEngine.sln em Source / Blogengine
- No Visual Studio Solution Explorer, abra BlogEngine.Core> Web> UrlRules.cs
Neste arquivo, adicionei as seguintes linhas de código:
Nas constantes #region e campos da classe UrlRules
private static readonly Regex YearMonthDayRegexs = new Regex ("/ ([0-9] [0-9] [0-9] [0-9]) / ([0-1] [0-9]) / ([0 -3] [0-9]) / ", RegexOptions.IgnoreCase | RegexOptions.Compiled);
No método ExtractTitle, que recebe como segundo parâmetro a url das postagens, você deve escrever as seguintes linhas de código imediatamente após esta linha de código
url = url.ToLowerInvariant (). Substituir (“-“, “-“);
if (url.Contains ("/ post /") || url.Contains ("/ POST /")) {if (YearMonthDayRegexs.IsMatch (url)) {var match = YearMonthDayRegexs.Match (url); var year = match.Groups [1] .Value; var mês = correspondência.Grupos [2] .Valor; var day = match.Groups [3] .Value; url = url.ToLowerInvariant (). Replace ("/" + year.ToString (), ""); url = url.ToLowerInvariant (). Replace ("/" + month.ToString (), ""); url = url.ToLowerInvariant (). Replace ("/" + day.ToString (), ""); if (url.Contains ("?")) {url = url.Substring (0, url.Length - 1); } context.Response.AppendHeader ("local", url); context.Response.StatusCode = 301; }}
No entanto, se suas postagens tiverem um URL terminando com a extensão .aspx, você precisará mover estas linhas de código logo após esta declaração:
if (url.Contains (BlogConfig.FileExtension) && url.EndsWith ("/")) {url = url.Substring (0, url.Length - 1); context.Response.AppendHeader ("local", url); context.Response.StatusCode = 301; }
Dessa forma, seus artigos antigos contendo a data no URL serão redirecionados para um URL sem data, assim como no exemplo abaixo:
- da: /post/2013/10/11/come-trasferire-i-contatti-e-altri-dati-da-iphone-ad-android.aspx
- para: / post / how-to-transfer-contacts-and-other-data-from-iphone-to-android
Quando terminar no Visual Studio, vá para o menu Compilação e selecione Ricompila BlogEngine.Core. Aguarde a conclusão da operação e vá para SourceBlogEngineBlogEngine.CorebinRelease para copiar o arquivo Blogengine.core.dll e cole na pasta Caixa na raiz do seu site. E é isso!
Se você não deseja se envolver com o BlogEngine.Core, pode tentar intervir no Web.Config com essas linhas de código. Atenção deve ser testada, pois eu não tentei.
Posto isto, tenho que deixar um agradecimento especial a dois grandes bloggers que, com a sua disponibilidade, me ajudaram a sair desta má situação, e que realmente admiro e respeito:
Luca Congiu: desenvolvedor asp.net e blogueiro DotNetCode.com e autor de alguns artigos em SoulTricks.com
Giorgio Borelli: autor e criador do blog Informaticando.net - uma web em torno da tecnologia da informação.