2012-02-17 115 views
1

用户请求PNG图像,例如:http://server/myfolder/subfolder/1234.png。如果.png不存在,那么我想在相同名称的同一个文件夹中显示.gif,但.gif扩展名应该存在。.htaccess规则堆叠和404重定向

另一个补充是我们最近改变了目录结构,所以我需要检查的URL可能已经改变了。例如,上面的URL应该可以通过直接请求http:// server/myfolder/subfolder/1234.pnghttp://server/oldfolder/1234.png来达到。在目录结构的变化可以表示为:

RewriteRule oldfolder/(.*) myfolder/subfolder/$1 [L,QSA] 

在这两个目录,我需要检查文件是否存在,并在必要时使用不同的图片来代替。任何帮助将不胜感激。

回答

2

尝试将以下内容添加到网站根目录中的.htaccess文件中。

它应该与您更改的文件结构一起工作。

RewriteEngine on 
RewriteBase/

#if the file does not exist 
RewriteCond %{REQUEST_FILENAME} !-f 
#and is in any of these folders: /myfolder/subfolder or /folder1 or /folder2 
RewriteCond %{REQUEST_URI} ^/(myfolder/subfolder|folder1|folder2)/ [NC] 
#and its a png, then try to serve the gif instead 
RewriteRule ^(.+)\.png$ $1.gif [L,NC]  
+0

虽然不会重定向所有图片吗?我只希望它在特定的子目录中处于活动状态,在任何其他情况下,如果图像不存在,我想要通常的404。 – user1216597 2012-02-17 16:27:42

+0

@ user1216597它将重定向所有不存在的.png图像。我编辑它只适用于特定的文件夹。您可以更改这些以匹配您想要的文件夹。 – 2012-02-17 17:34:45