Here's my apache rewriterule:

RewriteCond %{QUERY_STRING} cate_id\=(\d+)
RewriteRule ^cate.php$ category-%1-b0.html [R=301,L]

And I wish to redirect cate.php?cate_id=72 to category-72-b0.html, however it redirect to category-72-b0.html?cate_2=72, I'm not going the querystring after .html, can there be anyway to get rid of it?

Try:

RewriteRule ^cate.php/.*$ category-%1-b0.html? [R=301,L]

Do this: Spot the "?" in the finish from the RewriteRule.

RewriteEngine On
RewriteCond %{QUERY_STRING} cate_id\=(\d+)
RewriteRule ^cate.php$ category-%1-b0.html? [R=301,L]