我一直在寻找很多例子,但只是无法让我的头,这可能是不可能的。我已经继承了一个Wordpress网站的混乱。重写图像在子目录
我有这个DIR结构,WordPress的:
/wp-content/uploads/
/wp-content/uploads/2011
/wp-content/uploads/2012
/wp-content/uploads/Organised
/wp-content/uploads/Organised/0-9
/wp-content/uploads/Organised/A
/wp-content/uploads/Organised/B
/wp-content/uploads/Organised/ and so on ... to Z
基本上有超过93000名的文件的文件夹/wp-content/uploads/
,有的在2011年和2012年的文件夹。我需要移动93,000个文件,因此决定让文件夹中的“组织”文件夹反映第一个字母/潜在文件的数量。
虽然这不是问题,但移动它们即需要确保外部请求仍可以基于旧URL访问这些文件。
所以:
/wp-content/uploads/APicture.jpg
将改写到:
/wp-content/uploads/Organised/A/APicture.jpg
,同时仍允许访问真实URL,如:
/wp-content/uploads/2012/AnotherPicture.jpg
我觉得像这样的重写URL的工作,但它不,我已经尝试了很多变化,也许它不能像这样工作?
RewriteRule ^/wp-content/uploads/([^/]+)(\.png|\.jpg|\.bmp|\.gif)$ /wp-content/Organised/T/$1$2
注:为了测试我是检查URL /wp-content/uploads/taylor-swift-harry-styles.jpg
这样就是为什么我硬编码生成的URL重写,但我知道它需要改变以匹配首字母。
感谢您的帮助。
感谢faa,迄今为止这么好。虽然我没有考虑大写/小写问题。这是否意味着我需要同时创建一个“a”和“A”目录,以此类推z/Z,并相应地对文件进行排序?我想这是有道理的,因为它在Linux上,但如果是移植到Windows上,情况并不重要 - 那会是一个问题吗? – Anthony
我不这么认为,尽管在这个问题上有一个单一的策略会更安全一些:我想是符合Linux和HTTP的。 –
好的,我稍微修改它。第一个工作正常,它捕捉到a-z,A-Z和0-9个字符。第二个意思是抓住所有其他的符号,但它不会触发。我究竟做错了什么。 FIRST:RewriteCond%{REQUEST_URI} wp-content/uploads /([A-Za-z0-9])([^ /] +)\。([^ /] +)/? [NC] RewriteRule。* wp-content/uploads/_Organised /%1 /%1%2.%3 [L] SECOND:RewriteCond%{REQUEST_URI} wp-content/uploads /(.*)$/? [NC] RewriteRule。* wp-content/uploads/_Organised/_Misc /%1 [L] – Anthony