Question

J'utilise http://urlrewriter.net/ pour réécrire les URL sur mon site Web. Par exemple, je réécris:

  

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

à

  

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

Ce que j'essaie de faire (à des fins de référencement) pour ajouter dynamiquement la balise méta:

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

uniquement à la page qui n'a pas été réécrite. En effet, je veux que les deux URL fonctionnent, mais que seule l’une réécrite soit indexée par les moteurs de recherche.

Comment déterminer quelle version de la page a été demandée?

MODIFIER

Les réponses ci-dessous suggèrent une redirection 301 au lieu d’utiliser une balise méta. Peut-être que je vais faire cela, mais je veux toujours connaître la réponse à la question sous-jacente ... Comment savoir si la page a été réécrite?

Était-ce utile?

La solution

personnellement, je redirigerais celui qui était non réécrit vers celui qui était réécrit et n'utilisais que la copie unique de la page. C’est plus facile pour les utilisateurs et, du point de vue du référencement, vous n’avez qu’une copie du contenu.

Autres conseils

Si vous devez le faire, vous pouvez probablement faire quelque chose comme:

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

Et vous pouvez rechercher l'en-tête dans votre vue et ajouter la balise Meta des robots si vous en avez besoin.

Ceci sera également renvoyé au client, donc si vous voulez masquer cela, vous pouvez écrire un CustomAction ( http://urlrewriter.net/index.php/support/reference/actions/custom-action ) qui définira une sorte de valeur d'état dans votre requête.

Cependant, je ne recommanderais pas d'avoir deux URI pour la même ressource. Je vous suggère de garder la seule représentation. Si vous ne souhaitez pas invalider les anciens favoris, vous pouvez configurer l’ancien pour qu’il redirige vers le nouveau.

En complément de la réponse de chakrit, il semble que UrlRewriter.NET stocke l'URL d'origine dans le HttpContext, dans une clé appelée UrlRewriter.NET.RawUrl . Donc, vous pouvez essayer quelque chose comme:

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

La méthode la plus évidente consiste à utiliser l'objet Request.Url dans votre page pour obtenir des informations sur l'URL et la chaîne de requête. Par exemple:

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

Je pense que c'est le travail de HttpContext.Current .Items .

Vous pouvez enregistrer le " Redirection " dans HttpContext.Current.Items, puis dans vos pages, vous pouvez le vérifier pour une certaine valeur ajoutée.

Je pense que vous pouvez ajouter à urlrewriter.net des points d'ancrage qui pourraient le faire, quelque chose à côté:

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

Ensuite, dans vos pages Web, vous pouvez le vérifier par:

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

Je l'ai depuis longtemps laissé au framework de routage ASP.NET dans .NET 3.5 SP1, c'est mieux que urlrewriter.net IMO.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top