Erstellen Sie benutzerdefinierte PHP-Fehlerseiten in cPanel, ohne sie von der Seite wegzuleiten, die den Fehler ausgelöst hat

9

Ich versuche, meinen Webserver mit angepassten Fehlerdokumenten / Seiten zu versehen, aber mit PHP code, ohne sie von der Seite wegzuleiten, die den Fehler ausgelöst hat.

>

Nehmen wir an, wir navigieren zu http://website.com/pages/1 und es wurde der Fehler 500 ausgelöst, mit Standard wäre die Seite nur eine leere weiße Seite mit dem Text " Error 500 (Internal Server Error) "das würde ungefähr so ​​aussehen:

>

Wie Sie oben sehen können, wurde es NICHT von der Seite umgeleitet, die den Fehler ausgelöst hat. Ich möchte, dass diese Seite "ein Teil der Website" aussieht, aber mit darin enthaltenem PHP-Inhalt.

Ich kann den PHP-Inhalt nicht in die Fehlerseiten über cPanel einfügen, indem ich die Seiten editiere, die Sie unten sehen:

>

Wenn ich die obige Fehler-500-Seite bearbeiten würde, würde das Problem mit dem folgenden Inhalt sein, dass http://website.com/pages/1 dann wiederum zu http://website.com/500.shtml umleiten würde umleiten zu http://website.com/500.php

Ich mache NICHT möchte, dass es überhaupt umleitet, sonst bedeutet es, die Seite zu aktualisieren, im Wesentlichen wird nur die Seite 500.php aktualisiert, anstatt die /pages/1

zu aktualisieren %Vor%

Das gleiche genaue Problem würde existieren, nur ohne dass es sich um 2-Ketten-Umleitungen handelt, stattdessen würde es nur eine Umleitung sein, die Folgendes in der .htaccess-Datei verwendet:

%Vor%
  

Aktuelles Ergebnis: Umleitung zu /500.php

     

Erwartetes Ergebnis: Anzeige von 500.php in / auf Ссылка ohne Weiterleitung

Wie kann ich benutzerdefinierte Fehlerseiten mit PHP-Inhalt haben, OHNE dass es von der Seite umgeleitet wird, die den Fehler ausgelöst hat?

Gibt es eine Möglichkeit, es über root zu tun (könnte ich meine Hosts dazu bringen, etwas zu tun, wenn ja was?)

    
Ryflex 16.09.2015, 04:45
quelle

2 Antworten

1

Wie die anderen geantwortet haben, sollte das funktionieren:

%Vor%

Wenn Sie keine vollständige URL angeben, wird nur die Seite angezeigt (eine interne Weiterleitung). Wenn Sie die vollständige URL angeben, wird eine Weiterleitung an diesen Client vorgenommen. Dies ist wie von Apache hier beschrieben: Ссылка

  

Beachten Sie, dass Sie ein ErrorDocument angeben, das auf eine Remote verweist   URL (dh alles mit einer Methode wie http davor), Apache   Der HTTP-Server sendet eine Weiterleitung an den Client, um ihm mitzuteilen, wohin   finde das Dokument, auch wenn das Dokument am Ende gleich ist   Server.

Die Tatsache, dass das obige nicht für Sie funktioniert, bedeutet eines von mehreren Dingen:

  1. Sie tun es falsch und geben immer noch die vollständige URL an, obwohl Sie behaupten, nicht zu sein.
  2. Cpanel fügt die vollständige URL hinzu (nicht sicher, wie Sie die .htaccess-Datei bearbeiten oder ob sie über die obige GUI erfolgt).
  3. Ihre .htaccess-Datei wird ignoriert (vielleicht, weil Sie die Werte in der GUI setzen oder weil FileInfo auf Serverebene nicht eingestellt ist, kann dies nicht in der .htaccess-Datei angegeben werden : Ссылка ), in diesem Fall muss die vollständige URL selbst von einer anderen Konfiguration abgerufen werden .
  4. Das Skript 500.php führt die Weiterleitung selbst durch (sollte aus den Entwickler-Tools ersichtlich sein, wenn das Protokoll beibehalten wird und überprüft wird, ob eine Seite zurückgegeben wird oder zwei).
  5. Es gibt einen Fehler im Apache (den ich und andere nicht kennen).
  6. Magie

Können Sie diese Dinge überprüfen?

Könnte Ihnen auch helfen zu wissen, auf welcher Version von Apache Sie sind?

Haben Sie auch eine einfache 500.html-Datei ausprobiert, um zu sehen, ob dies ohne Umleitung funktioniert? Theoretisch wäre eine 500.php-Datei auch in Ordnung, aber es wäre interessant, sie einzugrenzen (und würde auch zeigen, ob diese Änderung in 500.html aufgenommen und verwendet wurde oder ob sie immer noch auf 500.php zeigt, was das vielleicht wäre zeige an, dass dies von einer anderen Konfiguration übernommen wurde als du denkst).

    
Barry Pollard 22.09.2015, 17:15
quelle
0

Wenn Sie so etwas in Ihrer .htaccess-Datei hinzufügen, sollte die Fehlerseite einfach ohne Umleitung angezeigt werden. Ich habe noch nie absolute Pfade verwendet, wie Sie es in Ihrem Beispiel für Fehlerseiten getan haben, also bin ich mir nicht sicher, welche Art von Verhalten es verursacht

%Vor%     
Crecket 18.09.2015 08:31
quelle