2012-11-12 20 views
5

aşağıda gibi durum için .htaccess kural oluşturmak istiyorum:.htaccess'i kullanarak dizindeki en yeni dosyaya yeniden yönlendirebilir miyim?

Böyle bir şey .htaccess kullanarak mümkün mü? RewriteCond ile dosya mevcut olup olmadığını kontrol edebilirim, ancak en yeni dosyaya yeniden yönlendirmenin mümkün olup olmadığını bilmiyorum.

+1

sen yapamaz En yeni dosyaya yönlendiren ve oraya gitmek için RewriteCond kullanan bir betik (PHP den)? – mgarciaisaia

+0

Sanırım yapabilirim, ama mümkün olan en hızlı çözümü arıyorum ve php betikleri oluşturmak, ikinci tekrarlamayı sağlamak anlamına gelir. Her dizinde en yeni dosyaya bağlantı ile çözüm düşünüyorum. –

cevap

1

bir CGI yazısını Yeniden Yazma teknik bir httpd.conf dosyasındaki bir RewriteRule ile programatic RewriteMap kullanabilirsiniz, bir .htaccess adresinin tek seçenektir.

Komut dosyası doğrudan dosyaya hizmet edebilir, böylece dahili bir yeniden yazma ile mantık tamamen sunucu tarafında olabilir, örn.

getLatest.php olduğunda

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^images/(.*)$ /getLatest.php [L] 

gibi bir şey .htaccess Kural

:

<?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); 
?> 

Not: Kod kısmen Cevapları ödünç: PHP: Get the Latest File Addition in a Directory

İlgili konular