Pergunta

Eu estou usando http://urlrewriter.net/ para reescrever urls no meu site. Por exemplo, eu estou reescrevendo:

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

para

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

O que eu estou tentando fazer (para fins de SEO) para adicionar dinamicamente a meta tag:

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

única para a página que não foi reescrito. Isso é porque eu quero que ambos os URLs para o trabalho, mas apenas o reescrito para ser indexado pelos motores de busca.

Como faço para determinar qual versão da página tenha sido solicitado?

Editar

As respostas abaixo sugerem um redirecionamento 301 em vez de usar uma meta tag. Talvez eu vou fazer isso, mas eu ainda quero saber a resposta para a pergunta subjacente ... como posso saber se a página foi reescrito?

Foi útil?

Solução

pessoalmente, gostaria de redirecionamento 301 daquele reescrito-un para o reescrito, e só utilizar a cópia única da página. É mais fácil para os usuários, e de uma perspectiva de SEO, você tem uma cópia do conteúdo.

Outras dicas

Se você precisa fazer isso, você provavelmente pode fazer algo como:

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

E você pode verificar o cabeçalho na sua opinião e adicionar os robots meta tag se você precisar dele.

Este vai ser devolvido ao cliente também, então se você quer esconder que você pode escrever um CustomAction ( http://urlrewriter.net/index.php/support/reference/actions/custom-action ) que irá definir algum tipo de valor de estado no seu pedido.

No entanto, ter duas URIs para o mesmo recurso é algo que eu não recomendo. Eu sugiro que você apenas manter a representação. Se você está preocupado com invalidar favoritos antigos você pode definir o velho para redirecionar para o novo.

Na sequência da resposta do chakrit, parece que UrlRewriter.NET armazena o URL original no HttpContext, em uma chave chamada UrlRewriter.NET.RawUrl . Então, você poderia tentar algo como:

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

A maioria método óbvio é usar o objeto Request.Url em sua página para obter informações sobre o URL e consulta string. Por exemplo:

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

Eu acho que é o trabalho de HttpContext.Current .Items .

Você pode salvar o "Redirecionamento" na HttpContext.Current.Items e, em seguida, em suas páginas, você pode verificá-lo por um certo valor acrescentado.

Eu acredito que você pode adicionar ganchos para urlrewriter.net que poderia fazê-lo, algo alongs:

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

E então, em suas páginas, você pode verificá-lo por:

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

Eu há muito que deixou para o quadro ASP.NET Routing no .NET 3.5 SP1, é melhor do que urlrewriter.net IMO.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top