如何通过.htaccess重定向含部分查询字符串的URL?
Apache 重定向规则修复:将缩略图请求跳转至原始图片
你的规则失效核心原因是RewriteRule仅匹配URL的路径部分(问号前的内容),不能直接处理查询字符串,之前的写法都没正确处理这一点,下面是可行的解决方案:
正确的重写规则
RewriteEngine On # 匹配带img参数的product_thumb.php请求,提取图片路径 RewriteCond %{QUERY_STRING} ^img=images/(.+)(&.*)?$ [NC] RewriteRule ^product_thumb\.php$ /images/%1 [NC,R=301,L]
规则说明
RewriteEngine On:确保重写引擎处于启用状态(如果配置文件里没开的话必须加上)RewriteCond行:匹配查询字符串,捕获images/之后的完整图片文件名(比如my_image_example.jpg),同时忽略w=120&h=120这类额外参数RewriteRule行:匹配路径为product_thumb.php的请求,将其永久重定向到/images/加上捕获到的文件名,%1对应上面RewriteCond里第一个括号的内容,R=301表示永久重定向,L表示执行完这条规则就停止后续匹配
你之前规则的问题
- 前两条规则:错误地把查询字符串写进了
RewriteRule的匹配模式里,RewriteRule只处理product_thumb.php这个路径,不会识别问号后的参数 - 第三条规则:
RewriteCond语法错误($符号位置错了),而且没有捕获具体的图片文件名,重定向目标也只是固定的/images,无法指向具体图片
内容的提问来源于stack exchange,提问作者raiwa
相关产品推荐
相关产品推荐

