簡體   English   中英

使用HTaccess重定向到子文件夾(如果其中包含所請求的文件)

[英]Using HTaccess to redirect to a subfolder if it contains the requested file

我正在嘗試從數據庫中加載一些內容,並將其緩存在服務器上的文件夾中。 當前,我正在使用此代碼來捕獲對http://localhost/files/hash.png請求,並將哈希和文件類型傳遞給返回數據的PHP文件。

文件可以具有任何擴展名,因此我需要捕獲完整的文件名(可以),或將其拆分為名稱和擴展名(也可以)。

這是我的HTaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^files/([^\.]+)\.([^\.]+)$ getfile.php?hash=$1&ext=$2 [NC,L]

問題是,我現在需要告訴它嘗試在名為cachefiles的子files夾中找到hash.png (即files/cache/hash.png )。 如果該文件存在於該文件夾中,則需要加載該文件而不是PHP文件。

有人可以幫忙嗎? 我正在努力使其正常運行。 這是對存儲在數據庫中的文件進行某種緩存。

RewriteEngine On
RewriteRule ^files/(.*) files/cache/$1 [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule *. - [L]
RewriteRule ^files/cache/(.*) files/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^files/([^\.]+)\.([^\.]+)$ getfile.php?hash=$1&ext=$2 [NC,L]

在這里,它在測試文件名是否存在之前,重寫文件名以更改file/cache/的路徑。 如果存在,請不要更改文件名和停止規則(使用[L] )。 如果不存在,請將文件名改寫回原來的名稱,然后繼續使用已有的規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM