riscrittura ad uno script CGI è l'unica opzione da un .htaccess, tecnicamente è possibile utilizzare un programmatico RewriteMap con una RewriteRule in un file dihttpd.conf.
Lo script può servire direttamente il file, quindi con una riscrittura interna la logica può essere interamente lato server, ad es.
Regola .htaccess
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^images/(.*)$ /getLatest.php [L]
Dove getLatest.php è qualcosa di simile:
<?php
$dir = "/srv/www/images";
$pattern = '/\.(jpg|jpeg|png|gif)$/';
$newstamp = 0;
$newname = "";
if ($handle = opendir($dir)) {
while (false !== ($fname = readdir($handle))) {
// Eliminate current directory, parent directory
if (preg_match('/^\.{1,2}$/',$fname)) continue;
// Eliminate all but the permitted file types
if (! preg_match($pattern,$fname)) continue;
$timedat = filemtime("$dir/$fname");
if ($timedat > $newstamp) {
$newstamp = $timedat;
$newname = $fname;
}
}
}
closedir ($handle);
$filepath="$dir/$newname";
$etag = md5_file($filepath);
header("Content-type: image/jpeg");
header('Content-Length: ' . filesize($filepath));
header("Accept-Ranges: bytes");
header("Last-Modified: ".gmdate("D, d M Y H:i:s", $newstamp)." GMT");
header("Etag: $etag");
readfile($filepath);
?>
Note: Codice parzialmente preso in prestito dalle risposte in: PHP: Get the Latest File Addition in a Directory
non puoi fare uno script (per esempio, PHP) che reindirizza al file più recente e usa RewriteCond per andare lì? – mgarciaisaia
Suppongo di sì, ma sto cercando la soluzione più rapida possibile e creare script php significa introdurre la seconda rediraction. Sto pensando a una soluzione con collegamenti simbolici al file più recente in ogni directory –