In meiner asp.net-Website habe ich benutzerdefinierte Fehlerseiten wie folgt in meiner Datei web.config definiert.
%Vor%Wenn die Datei nicht gefunden wird, wird die 404.htm-Seite korrekt angezeigt, aber das Problem ist, dass ich bei der Fiddler-Ablaufverfolgung 302 als HTTP-Statuscode zurückgebe. Dies ist ein großes Problem bei der Indexierung von Suchmaschinen aufgrund dieser vielen defekten Links wurden deshalb kürzlich auf meiner Website indiziert. Wie kann ich verhindern, 302 als HTTP-Statuscode für Datei nicht gefunden Fehler zurück und geben Sie 404 für Datei nicht gefunden Fehler. Ich benutze asp.net 3.5.
Nach dem Googeln über dieses Problem scheint dies das Standardverhalten zu sein, das Microsoft ASP.NET für die Situation bietet. Das ist sehr schlecht für SEO. Ein Work around, das ich gefunden habe, ist zu überprüfen, ob die angeforderte Datei in einem HTTP-Handler (oder global.asax-Datei) vorhanden ist, oder zu verwenden:
%Vor%Wenn die angeforderte Datei nicht vorhanden ist, überschreiben Sie den Anforderungspfad erneut in eine Datei nicht gefundene Seite (wenn Sie einen HTTP-Handler oder global.asax verwenden), löschen Sie die Serverfehler auf dem 404-Fehlerseite-Code und fügen Sie einen 404 hinzu Fehler Header auf die Antwort manuell statt warten auf den Server zu tun.
%Vor% In ASP.NET 4.0 können Sie redirectMode="ResponseRewrite"
verwenden, um nette Fehlerseiten und den richtigen HTTP-Code zu senden.
Wie Sie wahrscheinlich bereits wissen, wird die 302-Antwort verwendet, um dem Anrufer mitzuteilen, dass die angeforderte Ressource an einen anderen Ort verschoben wurde.
Wenn Sie in Fiddler sehen, dass der 302-HTTP-Code zurückgegeben wird, gibt es auch eine "location" -Deklaration in der Kopfzeile? Zum Beispiel:
%Vor%Es scheint, dass Sie etwas auf dem Webserver haben, der die 404-Returns abfängt und diese durch 302 ersetzt. Ich weiß, das ist nicht viel weiter zu gehen, aber ich würde vorschlagen, dass Sie sich die IIS-Konfiguration für die Website ansehen.