Seite 2 von 3

Verfasst: 09.10.2007 20:19
von Dr.Death
Wenn es ein Verzeichnis nicht existiert, dann ist das ein 404 :o :roll: :wink:

Verfasst: 09.10.2007 20:28
von UGC
Du tust ja so, als würden wir dein Problem nich verstehen.
DAbei verstehst du uns eher nicht.

Wenn ein Verzeichniss nicht vorhanden ist, ist das der Fehlercode 404!
Auf dieser Seite, die die Standart-404-Fehlerseite ersetzt kommt dann der Code für eine Weiterleitung.

Jetzt verstanden?
Wenn du die 404-Page von dir gemacht hast, kannst du mal bei http://planethtml.de reinsehen.
Die haben da gute Tutorials, wo unter anderem deine Weiterleitung steht.

Verfasst: 09.10.2007 21:02
von Asmodiel
Zusatzfrage:

Wie ich get-teile bearbeiten kann, weiß ich.
$_GET['blubb']

Aber wie kann ich den letzten Teil einer URL per php abfangen?

Verfasst: 09.10.2007 21:10
von Underhill
Hi,

was bedeutet für dich "letzter" Teil?

Aber ich schätze du suchst das:
http://de2.php.net/manual/de/function.parse-url.php


Gruß
Underhill

Verfasst: 09.10.2007 22:45
von Asmodiel
naja, mehr oder weniger.

also da bin ich jetzt rangekommen....

kann mir jemand verraten, wie ich eine 404 mit get versehe?

also bei einem 404 auf 404.php?url=FEHLER_ERZEUGENDE_URL, bzw den pfad /.../.../.../... halt ;P

Verfasst: 09.10.2007 23:01
von gn#36
Das ist denke ich nicht so einfach.

Relativ aufwändig ginge das mit Mod Rewrite, wenn du von Hand alle möglichen Anfragen ausschließt und dann den Rest in einer Art Catchall abfängst.

Code: Alles auswählen

#Catchall
RewriteRule (.*) ^errordocument.php?query=$1
Je nach Anwendung ist das aber vermutlich nicht mehr praktikabel.

Verfasst: 09.10.2007 23:08
von Pyramide
Innerhalb der 404.php kannst du auf Variablen wie $_SERVER['REQUEST_URI'] zugreifen, um die ursprünglich aufgerufene URL zu ermitteln.

Verfasst: 09.10.2007 23:09
von area57
Moin,

also bei mir klappts so:

htaccess

Code: Alles auswählen

ErrorDocument 400 /test.php?error=400
ErrorDocument 401 /test.php?error=401
ErrorDocument 402 /test.php?error=402
ErrorDocument 403 /test.php?error=403
ErrorDocument 404 /test.php?error=404
ErrorDocument 500 /test.php?error=500 


test.php

Code: Alles auswählen

$fehlercode=array(							"401" => "401 - login failed - please retry", 
                                    "402" => "402 - unknown error", 
                                    "403" => "403 - acess denied- please retry", 
                                    "404" => "404 - file or url not available", 
                                    "400" => "400 - unknown error", 
                                    "500" => "500 - server error"); 
$extheader = "From: MAIL_ADRESSE\r\n" 
                        ."Content-Type: text/plain; charset=\"iso-8859-1\"\r\n" 
                        ."Content-Transfer-Encoding: 8bit\r\n" 
                        ."Return-Path: MAIL_ADRESSE\r\n" 
                        ."X-Mailer: PHP ".phpversion()." / A//D CMS"; 
$msg = "Error: ".$fehlercode[$_GET['error']]."\n \n"; // Error-Code 
$msg .= "Browser: ".$_SERVER['HTTP_USER_AGENT']."\n \n"; // Verwendeter Browser 
$msg .= "IP-Adresse: ".$_SERVER['REMOTE_ADDR']."\n \n"; // IP-Adresse 
$msg .= "Requested URL: ".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n \n"; // URL der Datei die angefordert wurde 
$msg .= "Refering URL: ".$_SERVER['HTTP_REFERRER']."\n \n"; // URL die auf diese Datei verweist 
$msg .= "Seite / Kunde:  \n \n"; 
$msg .= "Fehler hervorgerufen von: ."; 
$mailto = "MAIL_ADRESSE"; // eMail-Adresse des Empfängers 
@mail("$mailto","Error: ".$_GET['error'],"$msg","$extheader"); 
?>
 Sie haben einen Fehler verursacht/gefunden, der Siteadmin bekommt darüber eine <br />
 E-Mail um sich den Fehler anzuschauen.<br />
 Die Nachricht enthält folgenden Inhalt:<br />
<h1>
 <? 
 $msg_ausgabe=  $msg;
  
 $msg_ausgabe = nl2br($msg_ausgabe) ;
 echo $msg_ausgabe;
 echo "</h1>";
vorteil daran ist, dass ich bei ner fehlermeldung gleich ne mail bekomme ;)
und natürlich kann man zum schluss statt der echo ausgabe ne header weiterleitung machen

Verfasst: 09.10.2007 23:14
von Asmodiel
hmm
möglich ist ja auch das abfangen des refferers in der 404.php

aber wie geht das denn?

$_SERVER['HTTP_REFERER'] geht iwie net.
scheint so, als würde meine .htaccess - error 404 keinen referer senden oO
EDIT: ja, mein htaccess schickt keinen referrer!

wie kann ich das problem jetzt angehen oO
Pyramide hat geschrieben:Innerhalb der 404.php kannst du auf Variablen wie $_SERVER['REQUEST_URI'] zugreifen, um die ursprünglich aufgerufene URL zu ermitteln.
Nein, das geht nicht, da das "404.php" ausgibt.

Verfasst: 10.10.2007 08:21
von Pyramide
Hast du es mal mit der Datei von area57 versucht? Werden bei dir sämtliche Daten aus $_SERVER nicht angezeigt oder nur Referrer und Request-URI nicht?