Ok I found the reason it was not working: apache always add path info postfix so when it's supposed to be ~~domain.com/string1/string2/id/RANDOMSTRING/, it became ~~domain.com/string1/string2/id/RANDOMSTRING//RANDOMSTRING/
domain.com/request/RANDOMSTRING/ is what I'll be using in browser and domain.com/string1/string2/id/RANDOMSTRING/ is where the url actual is. Also, "RANDOMSTRING" changes without pattern. So I need to replace /string1/string2/id/ with /request/ but need to keep "RANDOMSTRING" as it is.
I currently have
RewriteRule ^/request/(.*)/$ /string1/string2/id/$1/
but in rewrite log, I saw apache added one more "RANDOMSTRING", so it tries to point at