mod_rewrite RewriteCond basierend auf Last geändert? (.Htaccess)
-
19-09-2019 - |
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!
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 ...