1

我有一个包含 15000 张图像的文件夹,我决定将它们放在 10 个文件夹中。

我拥有 15000 张图片的初始文件夹网址是:

www.mysite.com/images/games/  

新文件夹的网址是:

www.mysite.com/images/games/1/  
www.mysite.com/images/games/2/  
www.mysite.com/images/games/3/  
www.mysite.com/images/games/4/  
www.mysite.com/images/games/5/  
www.mysite.com/images/games/6/  
www.mysite.com/images/games/7/  
www.mysite.com/images/games/8/  
www.mysite.com/images/games/9/  
www.mysite.com/images/games/10/  

如何重定向我的图像以匹配其正确的文件夹以消除 404 错误?

4

2 回答 2

2

就像我喜欢引用When Not To Use Rewrite一样,这实际上是一种需要的情况mod_rewrite

你没有说你是如何在十个新目录之间分配你的图像的,但我假设图像是编号的(例如00001.png,,00002.png... 15000.png)。然后你用最后一个数字来确定哪个图像进入哪个文件夹,即00001.png进入1目录,一直到15000.png哪个进入10目录(我想 - 你为什么不命名它0?)这就是你所做的,对吧?

你没有提到你在这个网站上使用的是什么服务器,所以我假设你使用的是 Apache,对吧?在这种情况下,您将编辑适当的配置文件(我开始尝试假设哪一个,但老实说,它可能是我能想到的四个中的任何一个,这取决于您是否拥有对 vhost 配置的编辑权限,或者在服务器,或者如果您使用的是 Debian 风格或 Red-Hat 风格的发行版,那么您使用的是Linux,对吗?您没有说。)您会确保RewriteEngine On某处有 a,然后您会这样做像这样的东西:

RewriteRule ^/images/games/(\d+)(\d)\.png$ /images/games/$2/$1$2.png

...除了您将目录命名为10而不是0,因此所有以结尾的目录0都会被误导。也许我们应该试试这个?

RewriteRule ^/images/games/(\d+0)\.png$ /images/games/10/$1.png [L]
RewriteRule ^/images/games/(\d+)([1-9])\.png$ /images/games/$2/$1$2.png [L]

...并首先捕捉 0,然后是其他所有内容。

我会检查这个答案,但你没有给我们足够的信息来知道如何做。

于 2013-01-22T02:04:35.033 回答
2

鉴于您在上述评论中的扩展:

我知道哪些图像放在哪个文件夹,但它是一个很大的列表

我建议将该列表放在一个文本文件中,并使用查找和替换(或awk?)将该列表转换为mod_redirect规则,例如

Redirect /images/games/oldname /images/games/8/oldname

然后将它们粘贴到配置文件中。如果没有实际的算法来确定这些是如何分类到目录中的,那么就没有可以重定向请求的程序,因为它需要一个公式来工作。

于 2013-01-22T03:19:12.793 回答