PeterK: ErrorDocs - BaseURL

Beitrag lesen

Hallo!

Also ich habe folgendes Problem: Die Seiten meiner Homepage werden so aufgerufen:

index.php?site=home

Ich hab nun für einige Fehlerfälle (401, 403, 404, 500) Fehlerseiten angelegt, nämlich

index.php?site=error/500
index.php?site=error/404
index.php?site=error/403 und
index.php?site=error/401

Diese binde ich so ein (.htaccess):

ErrorDocs

ErrorDocument 401 /hp/index.php?site=error/401
ErrorDocument 403 /hp/index.php?site=error/403
ErrorDocument 404 /hp/index.php?site=error/404
ErrorDocument 500 /hp/index.php?site=error/500

Wenn ich aber nun z.B. die Seite

http://localhost/hp/public_files/x.html (existiert nicht)

aufrufe, werden die Bilder in der nicht gefunden. Die Pfade zu den Bildern sehen in den Bildeigenschaften so aus:

http://localhost/hp/public_files/images/global/logo.gif
eigentlich sollte der Pfad so aussehen:
http://localhost/hp/images/global/logo.gif

Das heißt, dass der Browser den Pfad zur fehlenden Datei als basehref interpretiert. (Ist ja auch klar: Der Borwser schickt eine Anfrage an /hp/public_files/x.html und bekommt eine Antwort. Die Bilder betziehen sich also auf /hp/public_files/). Ein Lösungsweg wäre, über ein RefScript. Also Die ErrorDocuments so aufzurufen:

ErrorDocs

ErrorDocument 401 /honda/htDocs/ref.php?site=error/401
ErrorDocument 403 /honda/htDocs/ref.php?site=error/403
ErrorDocument 404 /honda/htDocs/ref.php?site=error/404
ErrorDocument 500 /honda/htDocs/ref.php?site=error/500

und dann so weiterzuleiten:

<?

$l = "Location: " . dirname($_SERVER['PHP_SELF']) . "/index.php?site=" . $_GET['site'];

// Microsoft, WebSTAR und Xitami bevorzugen zur Weiterleitung 'Refresh: 0; URL=www.xyz.de', andere Server benötigen 'Location: www.xyz.de'.
$header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')) ) ? 'Refresh: 0; URL=' : 'Location: ';

header($header_location . $l);
exit(1);

?>

Aber:
  1. Es müssen 2 Anfragen durchgeführt werden.
  2. Irgendwie funktioiert das nicht! (Getestet mit Opera 6.05 und IE 6.0 Auf Apache 4.2.3)

Opera hört niht auf zu laden (aber geladen werden 0 Bytes!) und IE gibt den Fehler "Die Seite wurde nicht gefunden."...

Oder man könnte was mit <base href="..."> zusammenbasteln, aber da muss ich ja eine Vollständigfe URL incl. Server angeben. Das ist auch nicht so das wahre...

Hatt jemand damit erfahrung oder kann mir sagen wie er dieses Problem gelöst hat??

Danke, Peter

--
Es gibt immer eine lösung - auch wenn sie keiner findet!!
Dat bin isch:ss:) zu:) ls:[ fo:| de:< va:| ch:? sh:) n4:~ rl:( br:$ js:| ie:) fl:)