【发布时间】:2021-06-29 17:41:22
【问题描述】:
我正在尝试为“按需”PHP 图像调整器创建一个缓存系统。
我需要能够检查缓存中是否存在以下文件和查询字符串:
https://www.example.com/images/img.jpg?w=400&h=300&fit=crop
我的 PHP 脚本通过将所有特殊字符 (?,&,=) 替换为下划线来生成缓存文件。
这是缓存对象的样子:
/cache/images/img.jpg_w_400_h_300_fit_crop
如何检查/cache 中是否存在requst + 查询作为文件并在存在时提供它?
我目前对没有查询变量的文件有效的是:
# if file exists in /cache/ directory
# serve file from /cache/ directory
RewriteCond %{DOCUMENT_ROOT}/cache/$1 -f
RewriteRule ^(.*)$ /cache/$1 [L,QSA]
我尝试过这样的事情,但它不起作用,因为我很讨厌 htaccess/regex :)
RewriteCond %{QUERY_STRING} ^(.*)(:?\&|\?|\=)(.*)$
RewriteCond %{DOCUMENT_ROOT}/cache/$1_%1_%2 -f
RewriteRule ^(.*)$ /cache/$1 [L]
【问题讨论】:
标签: apache .htaccess mod-rewrite url-rewriting query-string