在mod_rewrite中为RewriteCond过滤REQUEST_FILENAME

时间:2011-03-28 21:15:21

标签: mod-rewrite url-rewriting apache2

首先,一个简单的问题。如果无法做到这一点,我将发布一个寻求替代解决方案的问题。

简而言之,我需要一些方法来构建RewriteCond的过滤文件路径以进行检查。

例如,我想使用此网址:/images/photos/gallery/beach.jpg/unique-identifier.jpg/width:50;height:50来检查此文件是否存在:/images/__resized/photos/gallery/beach.jpg/unique-indentifier.jpg

为了使事情变得更复杂,如果找不到这个图像文件,我需要将完整的url传递给生成调整大小的图像的resizer脚本,最后发送一个指向完整url的重定向标题。

请询问您是否需要更多详情。我故意离开了一些,因为英语不是我的第一语言,我觉得添加更多细节会让我更难理解我想要做的事情:)

1 个答案:

答案 0 :(得分:0)

首先,此规则将检查文件名是否为您的特定格式。然后检查文件是否存在(添加__resized并省略最后一部分)。如果它不存在,那么它将调用resizer.php

RewriteCond %{REQUEST_URI} ^images/(.*)/width:[0-9]+;height:[0-9]+
RewriteCond %{DOCUMENT_ROOT}/images/__resized/%1 !-f
RewriteRule (.*) resizer.php

无需向resizer脚本提供任何GET参数,因为它可以访问$_SERVER['REQUEST_URI']中的原始网址

您没有明确提及,但我想如果这样的文件存在,那么您想将其发送给用户。

RewriteCond %{REQUEST_URI} ^images/(.*)/width:[0-9]+;height:[0-9]+
RewriteCond %{DOCUMENT_ROOT}/images/__resized/%1 -f
RewriteRule (.*) /images/__resized/%1