Sönke Tesch: Probleme mit SSI flastmod und LAST_MODIFIED

Beitrag lesen

Dein letzter Satz hat mich auf die richtige Spur gebracht. Der SSI-Aufruf für LAST_MODIFIED ist zwar in der SSI-(Schnipsel)-Seite eingebunden, wird aber nicht dort ausgeführt. In Wirklichkeit wird der SSI-Schnipsel zuerst in die "Mutterseite" eingebunden und dann erst ausgeführt. D.h. der Wert, der von LAST_MODIFIED ausgegeben wird, bezieht sich nicht auf die Veränderung des eingebundenen Schnipsels, wie ich fälschlicherweise angenommen habe, sondern auf die "Mutterseite", in die der SSI-Schnipsel eingefügt wird.

Das ist so nicht richtig. Alles, was per include virtual importiert wird, wird intern wie ein echter Abruf gehandhabt ("subrequest"). Nur deshalb ist es zum Beispiel auch möglich, CGI-Programme, auch mit URL-Parametern, korrekt in eine SSI-Seite einzubauen - sie werden ausgeführt und das Ergebnis landet in der SSI-Seite, nicht das Programm selber.

Mir ist im nachhinein eingefallen, daß ich mal ein ähnliches Problem hatte. Zwar ging es seinerzeit darum, daß die Mutterdatei als HTTP-Änderungsdatum das aktuellste aller ihrer Einzelteile ausgeben sollte, aber auch da kam als Datum immer nur jenes der Mutterdatei.
Grund war -wenn ich mich recht entsinne-, daß für dieses Attribut, welches sicher auch für die Variable LAST_MODIFIED verwendet wird, immer explizit auf den Datensatz der Hauptanfrage zugegriffen wurde, selbst wenn es sich um einen Subrequest handelte (eine Vergleichslogik, welches Datum neuer ist, fehlte selbstredend auch, tut aber hier nichts zur Sache).

Offensichtlich hast Du jetzt genau dieses Problem; ändern lässt es sich nur durch eine Änderung des Apache-Codes in mod_include.c.

Und ein Blick in die Anleitung sagt's eigentlich auch:

LAST_MODIFIED
    The last modification date of the document requested by the user.

"document _requested_by_the_user_", also das abgerufene Dokument, nicht die eigene Datei. Ist mir auch erst aufgefallen, als ich die Erklärung zu DOCUMENT_URI darüber gelesen habe:

DOCUMENT_URI
    The (%-decoded) URL path of the document requested by the user.
    Note that in the case of nested include files, this is not then
    URL for the current document.

Man beachte den letzten Satz. Ich sollte gelegentlich auch mal in die Anleitung blicken und das nicht immer nur anderen raten ;]

Also: Fehler gefunden, aber noch keine Lösung, da ich ja LAST_MODIFIED von der Unterseite brauche.

Eine möglicherweise frohe Botschaft hätte ich trotzdem noch: Über die Anleitungssachen oben bin ich nur gestolpert, weil ich mich eigentlich vergewissern wollte, ob SSI auch CGI-Variablen anbietet. Da dem tatsächlich der Fall ist, kannst Du vielleicht versuchen, über eine dieser Variablen die aktuelle Datei zu fassen zu kriegen (siehe http://hoohoo.ncsa.uiuc.edu/cgi/env.html).

PS: Finde übrigens das breite Spektrum Deiner Interessensgebiete recht  interessant. Von Kinoseiten für Hamburg bis hin zu Infos über den Erwerb eine Greencard.

Für irgendwas muß man ja sein Geld rauswerfen :)

Gruß,
  soenk.e