Pregunta

Estoy usando http://urlrewriter.net/ para reescribir las URL en mi sitio web. Por ejemplo, estoy reescribiendo:

  

http://www.example.com/schedule.aspx?state=ca

a

  

http://www.example.com/california.aspx

Lo que estoy tratando de hacer (para fines de SEO) para agregar dinámicamente la metaetiqueta:

<meta name="robots" content="noindex,follow" />

solo a la página que no se ha reescrito. Esto se debe a que quiero que ambas URL funcionen, pero solo la reescrita sea indexada por los motores de búsqueda.

¿Cómo determino qué versión de la página se ha solicitado?

EDIT

Las respuestas a continuación sugieren una redirección 301 en lugar de usar una metaetiqueta. Tal vez haga esto, pero todavía quiero saber la respuesta a la pregunta subyacente ... ¿cómo sé si la página ha sido reescrita?

¿Fue útil?

Solución

personalmente, redirigiría 301 de la no reescrita a la reescrita, y solo usaría la única copia de la página. Es más fácil para los usuarios, y desde una perspectiva de SEO, tiene 1 copia del contenido.

Otros consejos

Si necesita hacer esto, probablemente pueda hacer algo como:

<add header="X-WasRewritten" value="true" />

Y puede verificar el encabezado en su vista y agregar la metaetiqueta de robots si la necesita.

Esto también se devolverá al cliente, por lo que si desea ocultarlo, puede escribir una CustomAction ( http://urlrewriter.net/index.php/support/reference/actions/custom-action ) que establecerá algún tipo de valor de estado en su solicitud.

Sin embargo, tener dos URI para el mismo recurso es algo que no recomendaría. Le sugiero que mantenga la única representación. Si le preocupa invalidar marcadores antiguos, puede configurar el antiguo para que redirija al nuevo.

Además de la respuesta de chakrit, parece que UrlRewriter.NET almacena la URL original en el HttpContext, en una clave llamada UrlRewriter.NET.RawUrl . Entonces, podrías probar algo como:

bool isPageRewritten = 
   !string.IsNullOrEmpty(HttpContext.Current.Items["UrlRewriter.NET.RawUrl"]);

El método más obvio es utilizar el objeto Request.Url en su página para obtener información sobre la URL y la cadena de consulta. Por ejemplo:

if (Path.GetFileName(Request.Url.FilePath) == "schedule.aspx")
   //Not rewritten
else
   //rewritten

Creo que ese es el trabajo de HttpContext.Current .Artículos .

Puede guardar la "Redirección" en HttpContext.Current.Items y luego en sus páginas, puede verificar si hay un cierto valor agregado.

Creo que puede agregar ganchos a urlrewriter.net que podrían hacerlo, algo acompaña:

HttpContext.Current.Items["Redirected_From"] = currentUrlHere;

Y luego, en sus páginas web, puede verificarlo:

if (!string.IsNullOrEmpty(HttpContext.Current.Items["Redirected_From"]))
    // the page's been redirected, do something!
else
    // no it's visited normally.

Hace mucho que lo dejé para el marco de enrutamiento ASP.NET en .NET 3.5 SP1, es mejor que urlrewriter.net IMO.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top