解析文件并从 Apache 配置文件重定向

解析文件并从 Apache 配置文件重定向

毫无疑问这是不行的,但是有没有人经历过根据配置规则在 apache 中读取和重定向请求?

例如:

<If "!%{REQUEST_URI} =~ m#files/cache/static/[A-Za-z_\-0-9]+.cache# && -f '/var/www/files/cache/static/%{tolower:%{REQUEST_URI}}.cache'">
           #Read /files/cache/static/xyz.cache and redirect to url in contents
</If>

我需要能够读取文件的内容并重定向到指定的 URL。

这将允许 apache 处理动态图像请求,而不是通过 PHP。

我已经对 HTML 页面做了类似的事情,并且效果很好,但我想避免图像有“缓存”的副本,并且希望重定向到实际文件而不涉及额外的解析器。

为了清楚起见,请进行编辑:

用户 1 访问example.com/用户名-128-128.jpg

然后 PHP 解析 URL 并以正确的大小和比例检索图像(生成图像或从文件存储中检索)

说实际图像是/var/www/files/images/用户名/128/128/image.jpg

PHP 创建文件名“用户名-128-128.jpg.缓存“文件/var/www/文件/缓存/静态其中包含 ”example.com/files/images/用户名/128/128/image.jpg“然后重定向到实际文件

标题(“位置:example.com/files/images/用户名/128/128/image.jpg");

用户 2:请求同一个文件example.com/用户名-128-128.jpg

Apache 看到有一个文件“/var/www/files/cache/static/用户名-128-128.jpg.cache“然后它读取该文件并使用 mod_rewrite 重定向到该文件的内容。

我想避免的是创建/var/www/files/images/用户名/128/128/image.jpg/var/www/文件/缓存/静态/

因为这很浪费。

谢谢

答案1

看起来你的逻辑是落后的,但 mod_rewrite 可能会帮助你:

RewriteMap lc int:tolower
RewriteMap nocache "txt:/files/cache/static/xyz.cache"
RewriteCond /var/www/files/cache/static/${lc:%{REQUEST_URI}}.cache !-f
RewriteRule files/cache/static/[A-Za-z_\-0-9]+.cache ${nocache:foo} [L]

你不仅需要输入目标网址,还/files/cache/static/xyz.cache需要输入地图:

foo http://wwww.example.com/actual_file

或者

foo /actual_file

foo也可能是一个变量。

相关内容