По всей вероятности, проблема в том, что переписанный URL-адрес перезаписывается.Директивы перезаписи, по крайней мере, в контексте .htaccess, перезапускаются после перезаписи URL.Я думаю, что вы пытаетесь выполнить, можно сделать с помощью:
RewriteRule ^productfilter.php - [NC,L]
RewriteRule ^([^/]*)/?$ productfilter.php?category=$1 [NC,L]
Первый RewriteRule просто отказывается переписать, когда productfilter.php уже начинает путь.