12

如果请求的图片不存在,我想显示 no_picture.png。我应该用.htaccess 来做。非常感谢。

4

4 回答 4

28
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /no_picture.png [L]

让我们分解一下每一行的含义。

RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]

检查请求的文件是否具有括号中的文件扩展名()。在这种情况下,我们正在测试文件名是否以.jpg.jpeg.gif.png.ico

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

检查该文件是否不存在并且它也不是目录。

RewriteRule .*$ /no_picture.png [L]

如果请求的资源/文件通过了所有这些测试,那么它就是一个不存在的图像。因此,将图像返回no_picture.png给浏览器。这将保留文件名。如果要重定向到no_picture.png文件名,请更改[L][R]

于 2009-09-09T06:26:01.473 回答
4

这也应该有效:

<FilesMatch "\.(jpg|jpeg|png|gif)$">
ErrorDocument 404 "/no_picture.png"
</FilesMatch>
于 2010-10-26T09:56:18.930 回答
1
RewriteCond %{REQUEST_URI}  pic/(.*)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule pic/(.*)            pic/no_picture.png [L,E=STATUS:404]
于 2009-09-09T06:12:51.907 回答
1

在您的 /images/ 目录中,将其添加到您的 .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule no_picture.png [L]

也就是说,如果请求的文件不存在,请将其重写为 no_picture.png

于 2009-09-09T06:14:04.323 回答