繁体   English   中英

将具有特定扩展名的文件重写到特定目录

[英]Rewrite files with certain extension to a specific directory

所以...我有数百万个具有唯一名称的PNG,它们分布在一个复杂的目录结构中,深度达15-20层,我想将它们移到目录/ my / special / directory /

我想不出一种方法来执行重写(不是重定向)

我努力了:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/\.]+).png?$ /my/special/directory/$1.png [R]

但这仅适用于第一级(根)。 我也尝试过

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9/]+)([^/\.]+).png?$ /my/special/directory/$2.png [R]

但这根本不起作用。 我该怎么写?

我正在检查映像是否不存在,因为此虚拟主机中还有其他包含映像的目录,这些目录将保持不变。

TIA

我不太了解您尝试使用的模式: ^([^/\\.]+).png?$ ...

为什么? 在末尾? 为什么要明确拒绝文件名中的点? 当然,这仅适用于“第一级”的原因是您明确拒绝接受包含/的路径,而该路径恰好是文件夹定界符...

也可以使用[L]代替[R]因为您不需要重定向。

这给我们:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.png$ /my/special/directory/$1.png [L]

如果您必须重写以仅捕获文件名(实际上取决于链接的结构),那么这可能是一个不错的开始:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule /?([^/]+)\.png$ /my/special/directory/$1.png [L]

注意:第二个变体中没有前导^ ,因为您对最后一个文件夹分隔符之前指定的路径不感兴趣...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM