2010-05-17 5 views
5

J'ai configuré une page personnalisée 404 custom404.aspx qui renvoie correctement une erreur "404 Not Found", mais la page inexistante qui a été initialement demandé renvoie un état "302 trouvé". Donc quand je teste thispagedoesnotexist.aspx, il renvoie un "302 Found" puis le custom404.aspx charge et retourne un état "404 Not Found". Je veux m'assurer que les moteurs de recherche comprennent que la page demandée n'existe pas et qu'elle ne devrait apparaître dans aucun résultat de recherche. Est-ce que cette configuration est correcte?Pourquoi une page Non-existante renvoie-t-elle le statut 302 lors de l'utilisation d'une page 404 personnalisée dans asp.net

Répondre

-4

En termes simples ...

À titre d'exemple, l'utilisation:

/path_to_error_page.html 

... et non ...

http://www.example.com/path_to_error_page.html

La raison étant que les interprète serveur la demande initiale génère alors une redirection vers le 404 afin que votre client reçoive effectivement 2 réponses. Les chemins relatifs ne produisent pas de redirection mais un transfert de serveur interne entraîne seulement 1 réponse, celle que vous voulez !!

Cela devrait résoudre votre problème.

+0

Actuellement, j'utilise un chemin relatif pour les pages d'erreur 400 et 500. – user123212

0

Pour répondre à la question posée, voici comment les erreurs personnalisées fonctionnent dans ASP.NET. J'ai vu des exemples (bien que je n'en ai pas un) où les gens ont utilisé HttpModules pour intercepter les erreurs, et servir une page d'erreur personnalisée aux utilisateurs qui ne semblent pas être des bots, et une réponse aux utilisateurs qui semblent être des bots. Dans une direction différente, je ne suis pas sûr que les bots suivent régulièrement les 302 réponses de toute façon. Plus pertinent peut-être, est-ce vraiment si grave que votre page d'erreur (en supposant qu'elle soit utilisable) apparaisse dans les résultats de recherche? Au moins l'utilisateur a un lien vers votre site - c'est mieux que de voir apparaître le site de votre concurrent ...

+1

Je pense que l'obtention de pages d'erreur telles que la coutume 404 et 500 indexées par les araignées est une mauvaise chose.Google par exemple va discréditer les sites qui ont trop de messages d'erreur, – user123212

0

En fait, il fonctionne très probablement exactement comme il est configuré dans votre web.config. En fonction du serveur Web que vous utilisez (IIS 6/7) et de la manière dont vous avez configuré la page personnalisée 404, il s'agit essentiellement de la différence entre rediriger vers la page d'erreur personnalisée et l'exécuter!

Actuellement, vous avez configuré asp.net/IIS pour rediriger vers la page d'erreur. Modifiez les paramètres pour exécuter la page et vous obtiendrez exactement ce que vous cherchez :)

+0

Pourriez-vous être plus précis? Lorsque les pages d'erreur personnalisées sont définies dans la boîte de dialogue Gestionnaire IIS/Paramètres ASP, ces modifications sont appliquées au fichier web.config. Suggérez-vous d'intercepter l'erreur dans global.asax et d'utiliser Server.Execute ("/ path-to-error-page") et de désactiver les messages d'erreur personnalisés 500 dans web.config? – user123212

0

J'ai trouvé une solution pour cela:

dans votre web.config mettre « redirectMode = ResponseRewrite »:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/errors/GeneralError.aspx"> 
      <error statusCode="404" redirect="~/errors/PageNotFound.aspx" /> 
     </customErrors> 

... Et dans votre page d'erreur 404 dans Page_Load mis: this.Response.Status = "404 Not Found";

Voila!

Questions connexes