我正在使用服务器端图像调整器来自动提供正确尺寸的图像。
图像调整器从请求 URL 中获取调整大小的参数,因此我设置了一些 .htaccess 重写规则以使图像的 URL 更漂亮:
RewriteRule ^.*photos/homehero/(.*)$ /v2/imgr/w1140-h640-c16x9-q100-p1/v2/photos/$1 [R=301]
使用上述内容,我可以http://example.com/photos/homehero/file.jpg
在我的代码中使用它并返回正确尺寸的照片。这可以完美地工作,并且大小调整器会在生成图像后自动将图像缓存在服务器上,因此网站速度相当快。我目前有 5 张不同尺寸的图片。
考虑到屏幕尺寸和带宽的考虑,我想为移动用户提供一组单独的图像,其宽度/高度降低(w1140-h640
上图)并且质量也降低(q100
上图)。
我添加了一个重写条件来检测具有第二组重写规则的用户代理。这低于原始规则,例如:
RewriteCond %{HTTP_USER_AGENT} "(android|blackberry|googlebot-mobile|iemobile|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule ^.*photos/homehero/(.*)$ /v2/imgr/w570-h320-c16x9-q50-p1/v2/photos/$1 [R=301]
但是,这似乎不起作用。我尝试将第二个块放在第一个块之上,但这也不起作用,我还尝试%{HTTP_USER_AGENT} "!(android|
在“正常”重写规则块之前为用户代理(...)使用 not 标志,但这并没有不工作。
我用谷歌搜索并搜索了 StackOverflow 并发现了类似但不是问题,所以我想知道这是否真的可以在 .htaccess 中实现?我的完整规则块如下,任何帮助将不胜感激。
#Image Resizer Standard sizes
RewriteRule ^.*photos/homehero/(.*)$ /v2/imgr/w1140-h640-c16x9-q100-p1/v2/photos/$1 [R=301]
RewriteRule ^.*photos/tile-small/(.*)$ /v2/imgr/w504-h252-c6x3-q100-p1/v2/photos/$1 [R=301]
RewriteRule ^.*photos/hero/(.*)$ /v2/imgr/w1140-h200-c57x10-q100-p1/v2/photos/$1 [R=301]
RewriteRule ^.*photos/productshot/(.*)$ /v2/imgr/w1140-h640-c16x9-q100-p1/v2/photos/$1 [R=301]
RewriteRule ^.*photos/gallerythumb/(.*)$ /v2/imgr/w160-h90-c16x9-q100-p1/v2/photos/$1 [R=301]
# mobile site redirection
RewriteCond %{HTTP_USER_AGENT} "(android|blackberry|googlebot-mobile|iemobile|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule ^.*photos/homehero/(.*)$ /v2/imgr/w570-h320-c16x9-q50-p1/v2/photos/$1 [R=301]
RewriteRule ^.*photos/tile-small/(.*)$ /v2/imgr/w504-h252-c6x3-q50-p1/v2/photos/$1 [R=301]
RewriteRule ^.*photos/hero/(.*)$ /v2/imgr/w570-h100-c57x10-q100-p1/v2/photos/$1 [R=301]
RewriteRule ^.*photos/productshot/(.*)$ /v2/imgr/w570-h320-c16x9-q100-p1/v2/photos/$1 [R=301]
RewriteRule ^.*photos/gallerythumb/(.*)$ /v2/imgr/w160-h90-c16x9-q100-p1/v2/photos/$1 [R=301]