%3f
- это ?
в конце замены в процентном кодировании. Просто бросьте ?
в конце:
RewriteCond %{QUERY_STRING} ^main_page=product_info&products_id=301$
RewriteRule ^index\.php$ /blog/shop/index.php?route=product/product&product_id=301 [R=301,L]
Вы можете использовать ?
только в конце, чтобы указать пустой запрос, чтобы запрошенный запрос не добавлялся к новому URL, если он не содержит запроса.