Wie konfiguriere ich eine Web.Config-Datei, um eine benutzerdefinierte 404-Behandlung zu ermöglichen, während weiterhin Fehlerdetails auf Seite 500 angezeigt werden?


8

Zur Anpassung der 404-Handhabung und basierend auf dem Vorschlag des Hosting-Unternehmens verwenden wir derzeit das folgende web.config-Setup. Wir haben jedoch schnell festgestellt, dass bei dieser Konfiguration alle Seitenfehler (500 Fehler) auch auf diese benutzerdefinierte Fehlerseite umgeleitet werden. Wie kann ich diese Konfigurationsdatei ändern, damit 404 weiterhin mit benutzerdefinierten Dateien verarbeitet werden kann, während weiterhin Fehler auf der Seite angezeigt werden können?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultPath="/Custom404.html" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Custom404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
</customErrors>
</system.web>
</configuration>

1
Klarstellung, das Skript ist eigentlich klassisches Asp und der Server ist II7. Das Ziel besteht darin, 404-Ergebnisse auf eine benutzerdefinierte Seite umzuleiten, während weiterhin eine Fehlermeldung angezeigt wird, wenn auf einer Seite Fehler vom Typ 500 auftreten (anstatt auf eine benutzerdefinierte 500-Fehlerseite umzuleiten). Beim aktuellen Setup erreichen 404- und 500-Fehler immer /custom404.html.

Antworten:


4

Versuche dies -

<configuration>
   <system.webServer>
      <httpErrors errorMode="Custom" defaultResponseMode="File" >
         <remove statusCode="404" />
         <remove statusCode="500" />
         <error statusCode="404" 
            path="404.html" />
         <error statusCode="500" 
            path="500.html" />
       </httpErrors>
   </system.webServer>
</configuration>

Die 404-Fehlerseite ist 404.html und befindet sich in meinem Stammverzeichnis, ebenso die 500-Seite


Ist die Bestellung wichtig?
Pacerier

2

Klassischer ASP durchläuft den Fehler in IIS7 standardmäßig nicht. Um dies für eine Site zu aktivieren, führen Sie Folgendes über die Befehlszeile aus und ersetzen Sie {Site-Name} durch Ihre Name-Site:

c: \ windows \ system32 \ inetsrv \ appcmd.exe set config "{Site-Name}" -Abschnitt: system.webServer / httpErrors / previousResponse: "PassThrough" / commit: apphost

Darüber hinaus stellen Sie sicher , drehen weg freundlich Fehler IIS. Sie sind wirklich nicht freundlich.


Ich habe es zu web.config für die Site hinzugefügt. <httpErrors existingResponse="PassThrough"></httpErrors>
Stephen

2

Ich entdecke viele komplizierte Problemumgehungen für Classic ASP in IIS 7.5 für den Umgang mit der benutzerdefinierten Fehlerbehandlung nach IIS 6 für einen bestimmten Fehlercode, normalerweise 404. Ich hoffe, dies hilft Menschen, die darauf stoßen.

Ich verwende IIS 7.5 R2, aber ich denke, dies gilt allgemein für IIS 7.

Wenn Ihre web.config-Datei Folgendes enthält:

<customErrors mode="On">

... im IIS-Manager haben Sie wahrscheinlich unter Fehlerseiten die Option Features bearbeiten ausgewählt, um die Funktionen im Bereich Einstellungen für Fehlerseiten bearbeiten zu ändern. Wenn Sie dies in Benutzerdefinierte Fehlerseiten ändern (customErrors mode = "On"), müssen Sie die Behandlung jeder einzelnen Fehlernummer einrichten. Also tu das nicht.

Alles, was Sie tun müssen, ist RECHTS auf die Fehlernummer zu klicken, die Sie behandeln möchten, und Bearbeiten auszuwählen. Dort können Sie auf eine benutzerdefinierte Fehlerseite verweisen, die Sie erstellen oder auf eine URL umleiten. Anstatt eine benutzerdefinierte Fehlerseite zu erstellen, die Sie aktualisieren müssen, wenn sich Ihr Site-Design oder Ihre Menüs ändern, empfehle ich immer, zur Homepage umzuleiten und dem Querystring etwas wie "syserror" hinzuzufügen, das Sie dann von der Homepage aus verarbeiten können. Meine Technik besteht darin, dies in der Homepage-Skripterstellung zu überprüfen und eine freundliche Nachricht anzuzeigen, in der sie wissen, dass ihre Seite nicht gefunden wurde und sie zur Homepage weitergeleitet wurden.

Ihre web.config-Datei würde ungefähr so ​​aussehen:

<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" 
path="http://yoursite.com/index.asp?syserror" responseMode="Redirect" />
</httpErrors>

Ich schlage außerdem vor, dass Sie aus Sicherheitsgründen keine detaillierten Fehlermeldungen auf einer Produktionswebsite aktivieren, auch nicht für lokale. Schlagen Sie einfach die Details in Ihrem Systemprotokoll nach.

Nur meine 2 Cent, hoffe es hilft und bitte lassen Sie mich wissen, wenn Sie denken, dass ich in irgendetwas hier falsch bin.


1

Fügen Sie einfach einen weiteren Wert für 500 Fehler hinzu.

<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
<error statusCode="500" redirect="/Custom500.html" />
</customErrors>

1
Vielen Dank für die Antwort, aber das hat bei mir nicht funktioniert. Eine Seite mit 500 Fehlern leitet nach dem Einfügen Ihres Vorschlags immer noch zu /custom404.html weiter. Ich habe unter der ursprünglichen Frage einen zusätzlichen Hinweis hinzugefügt, der hoffentlich mein Ziel ein wenig verdeutlicht.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.