Moin!
Hallo zusammen,
ich möchte erreichen, daß mein Apache (V 1.13, SuSE 7.2) eine XML-Datei ausliefert, wenn die zugehörige HTML-Datei nicht existiert.
Habe folgende Regel aufgestellt (steht in der .htaccess für das betreffende Verzeichnis):
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule (.+).html$ $1.xml [R]
Deine RewriteCond greift vermutlich nicht.
-s testet laut Doku:
"'-s' (is regular file with size)
Treats the TestString as a pathname and tests if it exists and is a regular file with size greater than zero."
!-s greift also, wenn die genannte Datei nicht vorhanden ist. Aber du suchst absolut im falschen Verzeichnis, denn der nackte REQUEST_FILENAME allein ist nicht der gültige Pfadname zur Datei.
In der Doku steht zwar auch:
"REQUEST_FILENAME
The full local filesystem path to the file or script matching the request."
Das ist aber nach meiner Erfahrung relativ zum DOCUMENT_ROOT zu verstehen, der für die absolute Pfadangabe noch hinzuaddiert werden muß.
Eigentlich sollte aber immer umgeleitet werden, weil auch die vorhandenen Dateien nicht gefunden werden.
Mit mehr Error-Reporting und den Error-Logfiles (RewriteLogLevel hochsetzen) könntest du dem Fehler selbst auf die Spur kommen.
Zweite Frage:
Wie erreiche ich, daß ein Parser-Script mit dem Namen der XML-Datei als Parameter aufgerufen wird, wenn die HTML-Datei nicht existiert oder älter als die zugehörige XML-Datei ist?
Auch hier bin ich nicht wirklich fündig geworden.
Dann solltest du überlegen, ganz grundsätzlich immer das Skript aufzurufen, egal welche Datei vorhanden ist, und die Verfügbarkeit im Skript selbst prüfen. Insbesondere, weil du auch die Dateidaten prüfen willst. Im Erfolgsfall für die HTML-Datei schickst du diese einfach 1:1 an den Browser - soll XML konvertiert werden, schickst du eben das Ergebnis weg.
Das kann auch ganz ohne RewriteRule auskommen.
- Sven Rautenberg
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|