.htaccess 图片不存在 跳转到默认图片
您可以在.htaccess文件的顶部使用mod_rewrite来完成此操作:RewriteEngine On
# Redirect "webp" images that do not exist to "jpg"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.webp$ /$1.jpg [R=301,L]
对于任何对不存在的.webp文件的请求,301重定向将被触发到同一个文件,但扩展名为.jpg。例如,/foo/bar/does-not-exist.webp被重定向到/foo/bar/does-not-exist.jpg。
若要同时检查目的.jpg是否存在(重新导向之前),您可以新增其他条件。例如:
# Check that corresponding ".jpg" file exists before redirecting
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1.jpg -f
RewriteRule ^(.+)\.webp$ /$1.jpg [R=301,L]
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]
RewriteCond %{REQUEST_URI} pic/(.*)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule pic/(.*) pic/no_picture.png [L,E=STATUS:404]
在你的/ images /目录下,添加到您的.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule no_picture.png [L]