2010-02-24 7 views
0

Lorsque je consulte ma page en utilisant ces analyseurs d'en-tête d'hôte en ligne, la page indique 200 OK.Est-ce une façon correcte de faire une redirection 301?

Mais lorsque vous affichez dans mon navigateur, il redirige vers un autre site Web (ce que je veux que ce soit).

Le code que j'utilise est:

context.Response.Status = "301 Moved Permanently"; 
context.Response.AddHeader("Location", "http://www.example.com/article" + articleID); 
context.Response.End(); 

Je mis ce code dans un HttpModule.

cela fonctionne parce que quand vous essayez et appuyez sur l'URL, il fait la redirection. Il ne semble tout simplement pas retourner l'en-tête http correct.

Y at-il un problème?

Répondre

0

Pourriez-vous essayer d'utiliser: HttpContext.ApplicationInstance.CompleteRequest()

Au lieu de Response.End()?

1

Assurez-vous que le tampon de réponse est tout à fait clair avant d'ajouter vos têtes:

context.Response.Clear(); 
context.Response.Status = "301 Moved Permanently"; 
context.Response.AddHeader("Location", "http://www.example.com/article" + articleID); 
context.Response.End(); 
+1

Y at-il un moyen de vérifier comment google le voit? – Blankman

+0

Utilisez un proxy comme fiddler pour voir les en-têtes. C'est ce que google devrait voir. – Oded

1

essayer:

context.Response.StatusCode = 301; 
context.Response.StatusDescription = "Moved Permanently"; 
context.Response.RedirectLocation = "http://www.example.com/article" + articleID; 
context.Response.End(); 

J'utilise ci-dessus dans un module personnalisé et il ne retourne un bon 301 réponse HTTP.

1

Votre code est très correct. Je l'ai utilisé exactement ce que vous avez depuis des années:

context.Response.Status = "301 Moved Permanently"; 
context.Response.AddHeader("Location",URL); 
context.Response.End(); 
0

Lorsque j'utilise la journalisation HTTP dans le développement Web Helper, je vois le 301 et le 200. Donc, oui, votre code est correct.

+0

On pensait que ce devrait être seulement un 301? – Blankman