我需要捕获并重写一个网址路径,用~
替换每个/
以~
结尾重写,后跟原始文件名(扩展名为.jpg)路径。如果路径末尾的文件名以“AM”,“tn _”或“_cat”开头,则不应进行重写。
此代码适用于已知的单文件夹深度:
RewriteRule ^ImageFolio4_files/1/([^/]+)/((?!AM|tn_|_cat)[^.]+\.jpg)$ /ImageFolio4_files/cache/images/~$1~$2 [L,R=302,NC]
以下是要重写的原始路径的示例:
/ImageFolio4_files/1/Casual_Portraits/abc123_789-xyz.jpg
这是期望的最终结果:
/ImageFolio4_files/cache/images/~Casual_Portraits~abc123_789-xyz.jpg
我需要修改RegEx以在文件名之前容纳1或2个额外的子文件夹,我不知道从哪里开始。以下是较长文件夹路径和所需最终结果的示例:
/ImageFolio4_files/1/Casual_Portraits/Outdoors/Beach/abc123_789-xyz.jpg
改写为:
/ImageFolio4_files/cache/images/~Casual_Portraits~Outdoors~Beach~abc123_789-xyz.jpg
非常感谢任何帮助。
艺术思想 加利福尼亚州帕萨迪纳
答案 0 :(得分:0)
如果您想要处理多达三个级别,您可以使用以下内容:
RewriteRule ^ImageFolio4_files/1/([^/]+)/((?!AM|tn_|_cat)[^./]+\.jpg)$ /ImageFolio4_files/cache/images/~$1~$2 [L,R=302,NC]
RewriteRule ^ImageFolio4_files/1/([^/]+)/([^/]+)/((?!AM|tn_|_cat)[^./]+\.jpg)$ /ImageFolio4_files/cache/images/~$1~$2~$3 [L,R=302,NC]
RewriteRule ^ImageFolio4_files/1/([^/]+)/([^/]+)/([^/]+)/((?!AM|tn_|_cat)[^./]+\.jpg)$ /ImageFolio4_files/cache/images/~$1~$2~$3~$4 [L,R=302,NC]
请注意文件名的表达式更改:[^./]+
而不是[^.]+
,因此它与任何其他子文件夹都不匹配。