Frage IIS 404 Custom Error: Die URL gibt stattdessen den Antwortcode 200 zurück


Ich versuche, eine benutzerdefinierte 404-Seite mit IIS6 zurückzugeben. (Ich habe eine Website, die meist .shtml Seiten mit beweglichen Typen erstellt). Ich habe es auf 2 Arten versucht:

1) Setzen Sie den 404-Fehlerhandler in IIS auf den Typ "file" mit dem Pfad \ 404.html. Das funktioniert, aber es bedeutet auch, dass ich die Kopf- und Fußzeile meiner Site nicht importieren kann (daher die .shtml). Der 404-Fehlerhandler muss auf 404.shtml verweisen, was die 404-Standardseite ergibt ... ich denke, IIS kann verarbeite keine Shtml-Dateien im 404.

2) setze den Typ auf "URL". Das funktioniert super, nur dass der Antwortcode nicht mehr 404 ist! Es ist ein 200.

Wie kann ich IIS dazu bringen, mit dem 404-Antwortcode auf den Inhalt meiner 404.shtml-Datei zu antworten?


6
2018-02-26 21:43


Ursprung


Antworten:


Da es IIS ist, Hinzufügen

<% Response.Status = "404 Not Found" %>

an den Anfang von 404.shtml sollte den Antwortcode auf 404 ändern.

Ich bin nicht auf einer Windows-Maschine, so dass ich es im Moment nicht testen kann.

Aktualisieren:

Ich konnte endlich ein paar Tests auf einem IIS 6 ausführen. Wie Sie in einem Kommentar zu meinem Beitrag erwähnt haben, ein .shtml Die Datei lässt keine Skriptbefehle zu. Es gibt also mindestens zwei Möglichkeiten, dies zu umgehen:

  1. Anstatt Ihre benutzerdefinierte 404-Bearbeitungsseite zu benennen 404.shtml, nenne es 404.asp. Der Benutzer sollte nie den tatsächlichen Namen der Seite sehen, damit er keine Probleme verursacht. Beachten Sie, dass "Active Server Pages" im Ordner Web Service Extensions von IIS auf "Zulässig" festgelegt werden muss.

  2. Ändern Sie die Seitenerweiterungszuordnung für .shtml so, dass asp.dll anstelle von ssinc.dll verwendet wird. Sie können dies von IIS aus tun, indem Sie die Website auswählen und Eigenschaften -> Registerkarte Home-Verzeichnis -> Konfiguration -> Registerkarte Mappings anzeigen. Beachten Sie, dass dies alles andere als eine ideale Lösung ist, denn jetzt alle Ihre .shtml Dateien werden von bearbeitet asp.dll. Dies könnte dazu führen, dass Ihre Seiten langsamer rendern (vorausgesetzt, asp.dll Verarbeitet Dateien langsamer als ssinc.dll aufgrund höherer Komplexität) und verstößt gegen die Prinzip des geringsten Privilegs.

Wenn keine der Optionen zu Ihrer Situation passt, ist es vielleicht immer noch möglich, aber die Lösung ist für mich nicht sofort offensichtlich.


6
2018-02-26 22:24



Öffnen Sie im IIS-Manager die Eigenschaften Ihrer Website (oder Ihres virtuellen Verzeichnisses) und wechseln Sie zur Registerkarte Benutzerdefinierte Fehler. Dort können Sie festlegen, welche Datei bei jedem Fehlercode gesendet wird, einschließlich 404.


0
2018-02-26 23:28