CULTURA

BlogEngine.net: cómo eliminar la fecha de la URL de la publicación

Hace unos días tomé inconscientemente la decisión de eliminar fechas de la URL de la publicación en mi sitio desarrollado en la plataforma BlogEngine.net, un CMS de código abierto en Asp.net.

La funcionalidad disponible en Ajustes, en la sección Otros ajustes, le permite agregar o eliminar fechas de las URL de las publicaciones simplemente marcando o desmarcando el elemento Agregue la fecha al enlace Publicar.

Desafortunadamente para mí, esta operación de eliminación ha tenido un impacto negativo. y daños graves de SEO a Informarea.

Cómo eliminar fechas de la URL de la publicación en asp.net

Mientras WordPress gestiona el borrado de la fecha de la URL de las publicaciones con diferentes plugins, BlogEngine no proporciona una función ad hoc que ayude al usuario a solucionar este problema, y ​​esto crea una cierta molestia para los buscadores como Google, que interpretan su artículos como artículos duplicados, incluso si ha proporcionado un mapa del sitio válido y con nuevas URL. En este sentido, eche un vistazo a Busca en Google en la sección Apariencia en la búsqueda> Mejora de HTML> Título de metaetiqueta duplicado, para mostrar que las publicaciones duplicadas son precisamente aquellas con fecha y sin fecha. Por ejemplo, algo como esto:

Cómo escribir en el teclado de su PC sin mirar

Esta situación ha provocado una pérdida de posicionamiento de mis artículos en buscadores y una caída evidente de las visitas diarias. Mientras tanto, intenté buscar en Internet la solución a este problema. cómo eliminar las fechas de la URL de la publicación en Asp.net o C # y cómo hacer una redirección 301 permanente. Pero nada en absoluto. ¿Luego?

Así es como lo resolví en BlogEngine.net:

  • Descargó la última versión de Estudio visual en la versión gratuita
  • Descargó el archivo BlogEngine.net (fuente) de la versión que está utilizando.
  • Abrió la versión BlogEngine.sln en Source / Blogengine
  • En Visual Studio Solution Explorer, abra BlogEngine.Core> Web> UrlRules.cs

En este archivo he agregado las siguientes líneas de código:

En #region Constantes y campos de la clase 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);

En el método ExtractTitle, que recibe como segundo parámetro la url de las publicaciones, debe escribir las siguientes líneas de código dentro inmediatamente después de esta línea de código

url = url.ToLowerInvariant (). Reemplazar («-«, «-«);

if (url.Contains("/post/") || url.Contains("/POST/"))
{
if (YearMonthDayRegexs.IsMatch(url))
{
var match = YearMonthDayRegexs.Match(url);
var year = match.Groups[1].Value;
var month = match.Groups[2].Value;
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("location", url);
context.Response.StatusCode = 301;
}
}

if (url.Contains(BlogConfig.FileExtension) && url.EndsWith("/"))
{
url = url.Substring(0, url.Length - 1);
context.Response.AppendHeader("location", url);
context.Response.StatusCode = 301;
}


De esta manera, sus artículos antiguos que contienen la fecha en la URL serán redirigidos a una URL sin fecha, como en el siguiente ejemplo:

  • de: /post/2013/10/11/come-transferire-i-contatti-and-other-data-da-iphone-ad-android.aspx
  • a: / publicar / cómo-transferir-contactos-y-otros-datos-de-iphone-a-android

Cuando termine en Visual Studio, vaya al menú Compilacion y seleccione Reconstruir BlogEngine.Core. Espere a que se complete la operación, luego vaya a Fuente BlogEngine BlogEngine.Core bin Release para copiar el archivo Blogengine.core.dll y pégalo en la carpeta Compartimiento en la raíz de su sitio. ¡Y eso es!

Si no quieres poner tu mano en BlogEngine.Core, puedes intentar intervenir en Web.Config con estas líneas de código. Hay que poner a prueba la atención ya que no lo he probado.

<system.webServer>
<rewrite>
<rules>
<rule name="remove year month day" stopProcessing="true">
<match url="^/([0-9]+)/([0-9]+)/([0-9]+)/([_0-9a-z-]+)$" />
<action type="Rewrite" url="/post/{R:4}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>

Dicho esto, tengo que agradecer especialmente a dos grandes bloggers que, con su disponibilidad, me ayudaron a salir de esta mala situación, y a quienes realmente admiro y respeto:

Luca Congiu: desarrollador de asp.net y bloguero de DotNetCode.it y autor de algunos artículos en Informarea.it

Giorgio Borelli: autor y creador del blog Informaticando.net – una web en torno a las tecnologías de la información.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar