I suspect you've misunderstood how mod_alias (Redirect by that name) works. Unlike mod_rewrite, it works by
reappending the rest of the path onto the target you specify. So a rule involving
/folder/ >> /newfolder
means
/folder/page >> /newfolderpage
/folder/index.htm >> /newfolderindex.htm
et cetera. In other words, your redirects are doing exactly what you've told them to do.
But Google has indexed the actual index.htm page
That's because you've allowed "index.htm" to be directly accessible. You have to add a redirect, so anyone who requests
/directory/index.htm
by name is redirected to
/directory/
alone.
By default, search engines will ask for all three of these forms:
/directory/index.html
/directory/
/directory
even if there are no links anywhere to the "wrong" forms. They don't automatically ask for "index.htm" but I have to assume that once they know a site uses .htm in URLs, they'll try it that way. So your index redirect is best expressed as
index\.htm
without closing anchor, so both .htm and .html will get redirected. Make it
index\.s?htm
if you've got those.
I won't bother to repeat the index-redirect code, since it's one of the Top Ten Apache Questions ever. There may even be a specimen in the forums library.
I've added a space after each http:// so the forum doesn't make it a real link
Well, we keep telling you to use example.com, but you just won't listen :(