close
    search Buscar

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

    Quien soy
    Martí Micolau
    @martímicolau

    Valoración del artículo:

    Advertencia de contenido

    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 el apartado 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 graves daños secundarios de SEO a SoulTricks.



    Cómo eliminar la fecha de la URL de la publicación

    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 cierta molestia para los buscadores como Google, que interpretan la 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 Google Search en el apartado 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
    /post/2016/05/14/come-scrivere-sulla-tastiera-del-pc-senza-guardare.aspx
    / post / 2016/05/14 / cómo-escribir-en-el-teclado-de-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 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. ¿Por lo tanto?


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

    • Descargó la última versión de Visual Studio 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 las #region Constants y Fields 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 mes = partido.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 ("ubicación", url); context.Response.StatusCode = 301; }}


    Sin embargo, si sus publicaciones tienen una URL que termina con la extensión .aspx, deberá mover estas líneas de código justo después de esta declaración:


    if (url.Contains (BlogConfig.FileExtension) && url.EndsWith ("/")) {url = url.Substring (0, url.Length - 1); context.Response.AppendHeader ("ubicación", 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:

    • da: /post/2013/10/11/come-trasferire-i-contatti-e-altri-dati-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 Ricompila BlogEngine.Core. Espere a que se complete la operación, luego vaya a FuenteBlogEngineBlogEngine.CorebinRelease para copiar el archivo Blogengine.core.dll y pégalo en la carpeta Papelera en la raíz de su sitio. ¡Y eso es!

    Si no quiere involucrarse con BlogEngine.Core, puede 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.

    Dicho esto, tengo que agradecer especialmente a dos grandes blogueros 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.com y autor de algunos artículos sobre SoulTricks.com

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

    Añade un comentario de BlogEngine.net: cómo eliminar la fecha de la URL de la publicación
    ¡Comentario enviado con éxito! Lo revisaremos en las próximas horas.