net mvc launchsettings dotnet development asp asp.net url-rewriting seo

mvc - SEO URL reescritura ASP.NET



redirect mvc core (4)

Esta publicación te dice exactamente cómo usar el motor de enrutamiento de asp.net 4, dale un giro, si tienes un problema específico al implementarlo, háznoslo saber.

http://weblogs.asp.net/dotnetstories/archive/2011/01/03/routing-in-asp-net-4-0-web-forms.aspx

Como necesita un uso de parámetros específico, puede definir los parámetros para enviarlos a su página. Para eso, vea: http://msdn.microsoft.com/en-us/library/cc668177.aspx

y

Cómo: acceder a los parámetros de URL en una página enrutada

Ya tengo un sitio web ASP.NET

Quiero cambiar mi sitio para que sea más amigable con la URL de SEO.

Quiero cambiar ex. este sitio: www.mydomain.aspx? articleID = 5

a: www.mydomain / article / learningURLrewrite - articlename debe leerse desde DB

¿Cómo logro esto?

Ya he intentado con algunos artículos de Google que menciona IhttpModule sin suerte.

Mi objetivo es tener una clase responsable de la redirección basada en la ruta de carpeta (como esta):

string folderpath = "my folderpath" (could be articles, products etc.) string id = Request.QueryString["id"].ToString(); if(folderpath.equals("articles")) { string name = //find name from id in DB //redirect user to www.mydomain/article/name } if(folderpath.equals("products")) { string name = //find name from id in DB //redirect user to www.mydomain/products/name }

También quiero eliminar la extensión aspx


Si está utilizando .net 3.5 o menos, puede usar estos

  1. http://urlrewriting.net
  2. http://urlrewriter.net

Utilizo el segundo, en todos mis proyectos hechos en .net 3.5

si usa .NET 4.0 entonces puede hacer esto

  1. Enrutamiento de URL (creo que no es compatible con la reescritura de subdominio)
  2. URL Rewrite 2.0 (solo funciona con IIS 7)

ACTUALIZAR

Agregue estas líneas debajo de la etiqueta appSettings

<rewriter configSource="URLRewriter.config"/>

Luego crea un archivo separado llamado como URLRewriter.config

Y en eso usted puede escribir de esta manera (Agregar parada de procesamiento para que los archivos no se reescriban, es decir, imágenes y js, etc.)

<rewrite url="^(/.+(/.gif|/.png|/.jpg|/.ico|/.pdf|/.css|/.js|/.flv|/.eot|/.svg|/.ttf|/.woff|/.txt|/.doc|/.docx|/.pdf|/.xls|/.xlsx|/.xml)(/?.+)?)$" to="$1" processing="stop" /> <rewrite url="~/article/([^/.]+)" to="~/articledetail.aspx?articlename=$1" />

Entonces obtendrías el nombre del artículo en la cadena de consulta como esta

string articlename = Request.QueryString["articlename"];

Y en el menú u otra ubicación del sitio donde desea colocar el enlace al artículo, puede agregar un AppSettings para que luego, si desea cambiar el patrón de la url, pueda cambiarlo fácilmente solo desde la configuración,

<add key ="ArticalDetailsURL" value="/article/{0}" />

Luego, en la página puedes hacer esto

string articleName = "TestArticle"; lnkMenuLink.NavigateUrl = string.Format(ConfigurationSettings.AppSettings["ArticalDetailsURL"], articleName);

Gracias y saludos,

Harsh Baid


Si está utilizando ASP.NET 4, entonces debe buscar en enrutamiento de URL. Usted terminaría configurando rutas personalizadas así:

routes.MapPageRoute( "View Article", // Route name "Articles/{*ArticleName}", // Route URL "~/Articles.aspx" // Web page to handle route );

Y escribes los nuevos enlaces así:

Page.GetRouteUrl("View Article", new { ArticleName= NAMEFROMDATABASE });

Lamentablemente, no te daré un resumen de cómo construir todo tu sitio, pero dos lugares realmente buenos para comenzar son un artículo de Scott Gu y uno sobre 4 chicos .


También puede usar el enrutamiento con ASP.NET WebForms.

Los pasos son:

  1. Agregue la ruta (o rutas) al inicio de la aplicación.

    //In Global.asax void Application_Start(object sender, EventArgs e) { RouteTable.Routes.MapPageRoute("My Routename", "{*name}", "~/Article.aspx"); }

  2. Crea Article.aspx como un formulario web normal

  3. En el código para Article.aspx, puede acceder a la ruta url de esta manera:

    public void Page_Load(object sender, EventArgs e) { var thePath = RouteData.Values["name"]; // Lookup the path in the database... }