我尝试从数据库加载一些内容,并将其缓存在服务器上的文件夹中。目前,我使用此代码捕获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]
问题是,我现在需要告诉它尝试在名为hash.png
的{{1}}子文件夹中找到files
(即cache
)。如果文件存在于该文件夹中,则需要加载而不是PHP文件。
有人可以帮忙吗?我努力让它发挥作用。这是对存储在数据库中的文件进行一种缓存。
答案 0 :(得分:1)
pid
这里重写文件名以在测试之前改变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/
)。如果它不存在,请将文件名重写回原来的名称,并继续使用您已有的规则。