问题描述
在stackoverflow上进行一系列搜索后,我得到了这两个有效的htaccess代码,但是,我很困惑哪个更好。
实际上两者都可以正常工作,但在性能或速度上有什么不同吗?
<FilesMatch "\.(jpg|jpeg|png|gif)$">
ErrorDocument 404 "/no_profile_picture.png"
</FilesMatch>
和
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /no_profile_picture.png [L]
解决方法
当在您的站点根目录中找不到带有 /no_profile_picture.png
扩展名的图像时,这两个指令都将用于显示 jpg|jpeg|gif|png|ico
的核心目的。但是有细微的差别。
<FilesMatch "\.(jpg|jpeg|png|gif)$">
ErrorDocument 404 "/no_profile_picture.png"
</FilesMatch>
此指令还将向浏览器/客户端返回 404 (Http NotFound)
状态,但另一个块仍将 200 (Http OK)
状态返回给客户端。因此,我建议使用 FilesMatch
块以正确显示所需的未找到图像并将 404
返回给客户端。