Shortest answer:
You do not have a problem. GWT reports a 404 when trying to access an URL that does not exist. That's what is supposed to happen. In fact you may get into deeper trouble if you try to redirect all 404s.
Everyone has met this bogus-URL issue. I've currently got a flurry of
"GET /games/LucysDownloads.html">Sultan& HTTP/1.1" 404
Solution: find the 404 in gtw, click the "select all" box and then the "Yeah, yeah, shut up about it already" box. (Because of the specific names involved, I already knew that the URL could not be a typo on my own site. But I checked anyway.)
Longer answer: To redirect, you have to figure out whether that URL is arriving at your htaccess file encoded or disencoded.
Encoded: You could make a rule whose pattern says, in part,
\.(jpg|png|html).+
meaning "There's more stuff after the extension."
Disencoded: Here you'd have a RewriteCond that says in part
{QUERY_STRING} .
(meaning that a query string exists)
and then, again,
\.(jpg|html)
et cetera -- listing any extensions
that you actually use that would never have a query.
But you honestly don't need to do either one unless the bad URLs are coming in from links that you want and it's out of your power to get the source to fix the spelling.
It's also not a bad idea to check wmt periodically for any parameters. Do this
even if you don't use parameters or if you're certain that all your parameters are under control. Search engines can't tell if the parameter is part of your file's own name, or something attached by a linking site. In my case, I found a clutch of parameters that any idiot could tell
#1 means "open in a new window"
and
#2 cannot possibly affect the content of the page.
Sigh.