这是我正在使用的代码,在@anubhava的帮助下开发,用于重写CGI脚本生成的路径,将路径从我的jpg图像文件的位置重定向到另一个包含水印图像文件的文件夹。与原始文件相同的文件夹结构组织,但排除以tn_
或AM
(加_category_image.jpg
)开头的文件:
RewriteRule ^ImageFolio4_files/1/([^/]+)/((?!AM|tn_)[^.]+\.jpg)$ /ImageFolio4_files/cache/images/~$1~$2 [L,R=302,NC]
原始路径:
/ImageFolio4_files/1/Casual_Portraits/abc123_789-xyz.jpg
以上RegEx可以正确生成此输出:
/ImageFolio4_files/cache/images/~Casual_Portraits~abc123_789-xyz.jpg
我的挑战:我需要在ImageFolio4_files/1/
结构下方最多容纳三个文件夹的多文件夹结构。目前的代码不适合。我还需要排除名为_category_image.jpg
的任何文件,这些文件出现在ImageFolio4_files/1/
下面的每个文件夹级别(这些文件是类别名称旁边显示的唯一小显示图标)
我真的不知道如何容纳多文件夹结构,所以感谢您的帮助。
答案 0 :(得分:0)
首先,改变
([^/]+)/ to (([^/]+)/)+
在你的表达中。 第二,改变
(?!AM|tn_) to (?!AM|tn_|_category_image.jpg)
您可以使用负向前瞻(?!)作为整个文件名,它不会占用字符,只检查正则表达式“AM | tn_ | _category_image.jpg”是否与实际位置匹配。< / p>