Você provavelmente já sabe que está não a primeira pessoa a tem essa necessidade :)
# Allow filenames containing '?' to be served by escaping the '?' in the HTTP
# request so it's not interpreted as a query string.
#
# Apache 2.2: set query string to empty by ending rewritten path with '?'.
# Apache 2.4: use the qsdiscard flag instead
#
RewriteCond %{QUERY_STRING} !=""
RewriteRule ^/(.*) /$1\%3F%{QUERY_STRING}? [noescape,last,redirect]
A chave é a combinação de adicionar um redirecionamento e NE / noescape para garantir que o apache não escape do que não queremos que escape.
A regra acima significará que todo o site sob essa reescrita tratará ?
como parte do nome do arquivo. Se você precisar que ele corresponda ao seu filename.asp
- basta adicioná-lo ao RewriteRule