.htaccess - 检查 .jpg 大小并在匹配时替换
.htaccess - Check .jpg size and replace if match
我需要控制所有 remotes .jpg 匹配大小:4456 和 4824。如果匹配这些字节,我需要用默认图像替换。如果 .jpg
不存在,下面的代码将替换它。
RewriteCond %{REQUEST_URI} \.(jpeg|JPEG|jpg|JPG)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /default-image.jpg [L]
我需要,如果 example.com/*.jpg
的大小为 (4456 | 4824),则替换为 default-image.jpg
。
在 PHP 中,这对我的需要很有帮助,但我更愿意在 .htaccess
中设置。
$link = 'https://example.com/test.jpg';
$check_image = get_headers($link, 1);
$bytes = $check_image["Content-Length"];
if ($bytes < 5000) { ...
您可以在 Apache 2.4 上使用带有 mod_rewrite 的 Apache 表达式执行以下操作:
RewriteCond %{REQUEST_URI} !^/default-image\.jpg$
RewriteCond expr "filesize(%{REQUEST_FILENAME}) =~ /4456|4824/"
RewriteRule \.jpe?g$ /default-image.jpg [NC,L]
如果请求的图像不存在,那么 filesize()
函数只是 returns 0
(没有错误)。因此,要同时处理不存在的图像,您只需更改正则表达式以包含 0
,即。 /0|4456|4824/
.
旁白:
RewriteCond %{REQUEST_URI} \.(jpeg|JPEG|jpg|JPG)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /default-image.jpg [L]
在第一种情况下,不需要检查 jpeg|JPEG
,因为您在指令中使用了 NC
(不区分大小写)标志。但是,最好在 RewriteRule
模式 中执行此检查,而不是创建额外的 条件 .
无需检查请求是否映射到目录(第 3 个 条件 ),除非您的目录名称也以 .jpg
等结尾。 (不太可能)。文件系统检查相对昂贵,因此最好尽可能避免它们。
我需要控制所有 remotes .jpg 匹配大小:4456 和 4824。如果匹配这些字节,我需要用默认图像替换。如果 .jpg
不存在,下面的代码将替换它。
RewriteCond %{REQUEST_URI} \.(jpeg|JPEG|jpg|JPG)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /default-image.jpg [L]
我需要,如果 example.com/*.jpg
的大小为 (4456 | 4824),则替换为 default-image.jpg
。
在 PHP 中,这对我的需要很有帮助,但我更愿意在 .htaccess
中设置。
$link = 'https://example.com/test.jpg';
$check_image = get_headers($link, 1);
$bytes = $check_image["Content-Length"];
if ($bytes < 5000) { ...
您可以在 Apache 2.4 上使用带有 mod_rewrite 的 Apache 表达式执行以下操作:
RewriteCond %{REQUEST_URI} !^/default-image\.jpg$
RewriteCond expr "filesize(%{REQUEST_FILENAME}) =~ /4456|4824/"
RewriteRule \.jpe?g$ /default-image.jpg [NC,L]
如果请求的图像不存在,那么 filesize()
函数只是 returns 0
(没有错误)。因此,要同时处理不存在的图像,您只需更改正则表达式以包含 0
,即。 /0|4456|4824/
.
旁白:
RewriteCond %{REQUEST_URI} \.(jpeg|JPEG|jpg|JPG)$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .*$ /default-image.jpg [L]
在第一种情况下,不需要检查 jpeg|JPEG
,因为您在指令中使用了 NC
(不区分大小写)标志。但是,最好在 RewriteRule
模式 中执行此检查,而不是创建额外的 条件 .
无需检查请求是否映射到目录(第 3 个 条件 ),除非您的目录名称也以 .jpg
等结尾。 (不太可能)。文件系统检查相对昂贵,因此最好尽可能避免它们。