Tachen
(an die, welche nicht Fußblallabgelenkt oder Hitze-KO-abwesend sind)
Kann man via PHP irgendwie und vorallem
einfach, die für einen bestimmten Ort (Verzeichnis) verwendete 404-Fehlerseite anzeigen, welche der Server anzeigen würde, falls dort auf eine nicht existierende Datei zugegriffen wird?
Aktuell geb ich eine Eigene aus, welche etwa der Standarsfehlerseite eine Apache ähnlich sieht.
Man kann aber z.B. im Apache und auch via .htaccess oder sonstwie eine andere Datei anzeigen lassen.
('ne Dateisperre über .htaccess ist an dieser Stelle aber noch nicht gefragt)
Am Anfang einer PHP-Datei könnte z.B. sowas sehn:
Code:
require_once(dirname(__FILE__) . '/Scripts/Config.php');
PHP_Include('Functions.php');
PHP_Include('
MySQL.php');
PHP_Include('Template.php');
PHP_Include('Cache.php');
PHP_NoDirectCall();
Dort wird jetzt geprüft, ob dieses Script irgendwo eingebunden (include) oder direkt (über 'ne
URL) aufgerufen wurde.
Code:
function PHP_NoDirectCall() {
if (count(debug_backtrace()) > 1) return true;
while (ob_get_level()) ob_end_clean();
@header('Status: 404 Not Found');
@header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
echo "<!DOCTYPE
HTML PUBLIC \"-//IETF//DTD
HTML 2.0//EN\">\n<
html><head>\n<title>404 Not Found</title>\n"
. "</head><body>\n<h1>Not Found</h1>\n<p>The requested
URL $_SERVER[REQUEST_URI] was not found on "
. "this server.</p>\n<hr>\n$_SERVER[SERVER_SIGNATURE]\n</body></
html>\n";
exit;
}
Nja, und genau hier würde ich gerne die "allgemeine" Fehlerseite anzeigen. (so, als wenn es diese Datei also nicht gäbe)
PS: Ist nicht so wichtig (ich hoffe es geht auch so, wenn man Beides ausgibt),
aber falls jemand weiß, wie man "einfach" rausbekommt, ob PHP als CGI oder als Apache-Modul läuft, damit ich nur den richigen Header "Status: 404 Not Found" oder "HTTP/1.1 404 Not Found" senden kann ... wäre da erfräuft über eine Meldung
Irgendwie liefert Tante Google und Co. da einfach keine Lösungen.