PeterK: ErrorDocs - BaseURL

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:)
  1. Hi,

    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:

    Die Lösung ist, einfach serverrelative Pfade zu verwenden. Also <img src="/hp/images/global/logo.gif" alt="Logo">

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Das ist zienmlich Schwirig, weil hier auf dem Lokalen Server die Seite in einem -Unterordner liegen muss (also zB /hp/), während das auf dem Zielserver nicht geht... außerdem müsste ich ca. 80 Seiten mit je 5 - 10 Bildern ändern... Gibt es keine andere Möglichkeit??

      Peter

      1. Hi,

        Das ist zienmlich Schwirig, weil hier auf dem Lokalen Server die Seite in einem -Unterordner liegen muss (also zB /hp/),

        Warum? Was spricht gegen die Einrichtung eines Virtual Host?

        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
        http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
        1. Ivch hab sowas mal versuicht - es hat nicht geklappt... kannst du mir vieleicht sagen, wie das genau geht?? was muss ich in die httpd.conf einfügen?

          Thx, Peter

          1. Wie richte ich einen VirtualServer im Apache ein??

            Thx, Peter

            1. Moin!

              Wie richte ich einen VirtualServer im Apache ein??

              Schritt 1: Du bearbeitest deine lokale Hosts-Datei und fügst einen Rechnernamen mit deiner IP (notfalls 127.0.0.1) dort ein.

              Typischer Ablageort ist C:\WINDOWS\HOSTS (keine Dateiendung, auch kein Punkt). Ansonsten: Start -> Suchen -> Dateien und Ordner.

              Schritt 2: Du bearbeitest die Datei httpd.conf.

              NameVirtualHost *

              <VirtualHost *>
                 ServerName dein.servername.ausder.hosts
                 DocumentRoot /Pfad/zum/Webspace
              </VirtualHost>

              Siehe auch http://httpd.apache.org/docs/vhosts/name-based.html

              Optionale Angaben (für etwas mehr Möglichkeiten):
              <VirtualHost *>
                 ServerAdmin irgendeine@mail.adresse
                 ServerName dein.servername.ausder.hosts
                 DocumentRoot /Pfad/zum/Webspace
                 ErrorLog /Pfad/zum/error.log
                 CustomLog /Pfad/zum/access-log combined
              </VirtualHost>

              - Sven Rautenberg

              --
              ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|