ErrorDocs - BaseURL
PeterK
- php
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):
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:
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
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.gifDas 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
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
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
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
Wie richte ich einen VirtualServer im Apache ein??
Thx, Peter
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