Frage

Ich weiß, dass wir leicht eine RewriteCond auf jedem http stützen können Anfrage Header. Aber können wir überprüfen (einige) der Antwort Header, die gesendet werden werden? Insbesondere die Zuletzt geändert ein?

Ich will nur eine URL neu zu schreiben, wenn das Datum der letzten Änderung als 30 Minuten älter ist und ich versuche, den Aufwand zu delegieren, dass der Check-in eine PHP-Datei jedes Mal eine Datei aus dem Verzeichnis zu vermeiden, wird angefordert.

Vielen Dank im Voraus!

War es hilfreich?

Lösung

Der Outbound-Header nicht vorhanden ist, bis much später als mod_rewrite wirkt. Es gibt auch keine Datei-Modifikation Zeitfunktionalität in mod_rewrite eingebaute Kontrolle, so dass die nächsten Sie bekommen würden verwenden es macht ein

Andere Tipps

Nein, das ist nicht möglich. Aber Sie könnten einen Karte umschreiben, dass die Informationen von einem bekommen Programm mit weniger Overhead als PHP, vielleicht ein Shell-Skript.

Hier ist ein Beispiel Bash-Skript:

#!/usr/bin/env bash
while read line; do
    max_age=${line%%:*}
    filename=${line#*:}
    if [[ -f $filename ]]; then
        lm=$(stat -f %m "$filename")
        if [[ $(date +%s)-$lm -le $max_age ]]; then
            echo yes
        else
            echo no
        fi
    else
        echo no
    fi
done

Die Deklaration der Rewrite-Karte muss in Ihrem Server oder virtuelle Host configuraion-Datei abgelegt werden, da das Programm nur einmal gestartet wird und dann wartet auf Eingabe:

RewriteMap last-modified-within prg:/absolute/file/system/path/to/last-modified-within.sh

Und dann können Sie diese Rewrite Karte wie dieses (.htaccess Beispiel) verwenden:

RewriteCond %{last-modified-within:30:%{REQUEST_FILENAME}} =yes
RewriteRule ^foo/bar$ - [L]
RewriteRule ^foo/bar$ script.php [L]

Haben Sie mit mod_proxy betrachtet, mod_cache und / oder Tintenfisch? Es klingt wie Sie versuchen, Ihr eigenes Caching zu rollen ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top