Mod rewrite 为RewriteCond筛选mod_rewrite中的请求文件名

Mod rewrite 为RewriteCond筛选mod_rewrite中的请求文件名,mod-rewrite,url-rewriting,apache2,Mod Rewrite,Url Rewriting,Apache2,首先,一个简单的问题。如果无法做到这一点,我将发布一个问题,寻求替代解决方案 简言之,我需要一些方法来构建一个过滤文件路径,以便RewriteCond进行检查 例如,我想使用以下url:/images/photos/gallery/beach.jpg/unique identifier.jpg/width:50;高度:50检查此文件是否存在:/images/\uu resized/photos/gallery/beach.jpg/unique indicator.jpg 为了让事情变得更复杂,如

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

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

例如,我想使用以下url:
/images/photos/gallery/beach.jpg/unique identifier.jpg/width:50;高度:50检查此文件是否存在:
/images/\uu resized/photos/gallery/beach.jpg/unique indicator.jpg

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


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

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

RewriteCond %{REQUEST_URI} ^images/(.*)/width:[0-9]+;height:[0-9]+
RewriteCond %{DOCUMENT_ROOT}/images/__resized/%1 !-f
RewriteRule (.*) resizer.php
不需要为resizer脚本提供任何GET参数,因为它可以访问
$\u服务器['REQUEST\u URI']
中的原始URL

您没有明确提到,但我猜如果存在这样的文件,那么您希望将其发送给用户

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

谢谢你的快速回答。虽然它没有解决我的问题,但它让我意识到我的思路是完全错误的:)@Pichan总是乐于帮助:)尽管如此,你可以为其他尝试同样方法的人发布类似“问题无法以这种方式解决,因为……”的回答。只是想一想,我明天再做。现在是3点26分,我还在办公室做这件事。剩下的唯一问题似乎是,我无法让请求的文件相对于当前目录重写COND,就像我使用RewriteRule(.*)@Pichan可以使用
%{REQUEST\u URI}
它相对于当前目录(如果您使用的是.htaccess)。我使用的是.htaccess和
${REQUEST\u URI}
似乎相对于文档根。我在ubuntu 10.10上使用apache2。