fs,
Eleven redirections? Surely there are more in your .htaccess file.
Your mod_alias Redirect statements are okay - syntax Redirect {code} {URI} {absolute redirections}.
You are getting a query string because you directed it to be added with mod_rewrite (RewriteRule ^([a-zA-Z0-9_-]+)\.htm$ page.php?&id=$1). If you do not want a query string, do not use the QSA flag, do not add a query string and, if you want to remove any existing query string, add a ? at the end of the redirection (mod_rewrite).
The RewriteRules you first showed would not likely match through to the last RewriteRule because they are ANDed as you go through because you failed to utilize the Last flag (read the sticky posts or the tutorial Article linked in my signature).
The reason for ordering Redirects before RewriteRules is that mod_alias is part of Apache’s core and, therefore, its directives are handled by Apache before mod_rewrite directives. Of course, you can put them just about anywhere but (a) that’s not the order that Apache handles the code so (b) you should order your thinking to match Apache’s ordering to avoid confusion.
Rémon, you KNOW that the Redirects changed the extension from .htm to .php so your {REQUEST_FILENAME}\.htm (where was the extension removed so you needed to add .htm?) would not be matched.
fs,
The first thing to learn about .htaccess is to keep it empty (if at all possible) because .htaccess must be read AT LEAST ONCE for every file request (including .css, .js, .gif, .jpg, etc.). If one of my clients used something like that, they would be invited to find a host which would allow abuse of the shared server - I do not!
Then, I don’t believe that mod_alias even looks at query strings (many of your {old URI}'s do).
mod_rewrite’s (and some mod_alias directives) use of regular expressions is designed to eliminate the type of abuse that you’ve demonstrated in the “quite long” series of Redirect statements. In other words, look for patterns to use to cut this nonsense down!
Other comments (on your mod_rewrite code):
RewriteEngine On
# non-www to www Redirect In Apache - Based on code from http://www.websitetodos.com/
RewriteCond %{HTTP_HOST} ^mydomain\\.com$ [COLOR=#0000FF][NC][/COLOR]
RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L]
# OR RewriteRule .? http://www.mydomain.com%{REQUEST_URI} [R=301,L]
# because you're not using the (.*) in the redirection
# AND it's already available as %{REQUEST_URI}, i.e., efficiency
RewriteRule ^$ /vr_display_95bae8.php?filename=index.html [L,NC]
# to match http://www.mydomain.com/.html - why not REQUIRE letters, i.e., [a-z]+?
RewriteRule ^(.*)\\.html$ /vr_display_95bae8.php?filename=$1.html [L,NC]
# ditto; and combine both by using html?$ which makes the "l" optional
RewriteRule ^(.*)\\.htm$ /vr_display_95bae8.php?filename=$1.htm [L,NC]
Please have a think about all this - THEN come back with a rephrased question so we can help you learn.
Regards,
DK