[英]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]
問題是,我現在需要告訴它嘗試在名為cache
的files
的子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.