I am switching CMS and have about 600 URLs that need to get redirected to the new scheme. The URL on the old site looks like the following on my test server:

    www.example.us/?p=100&option=com_wordpress&Itemid=619

The new URL scheme will exist as:

    www.example.us/blog.php?p=100

Some old URLs use p=, others id= or catid=. I have tried various redirects like the following, all failing for various reasons:

    RewriteEngine on
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{REQUEST_URI}  ^/$
    RewriteCond %{QUERY_STRING} ^p=100
    RewriteRule .* 100.php

The result is that it redirect to 100.php but appends the query string to the url and ends up like:

    example.us/100.php?p=100&option=com_wordpress&Itemid=619

That is the closest to a solution. I have also tried the following with the failure message noted below:

    RewriteCond %{REQUEST_URI}  ^/$
    RewriteCond %{QUERY_STRING} ^p=100
    RewriteRule ^(.*)$ 100.php
    # Fails as it appends query string

    RewriteCond %{REQUEST_URI}  ^/$
    RewriteCond %{QUERY_STRING} ^p=100
    RewriteRule .* 100.php$
    # Fails with The requested URL /100.php$ was not found on this server.

    RewriteEngine on
    RewriteCond %{QUERY_STRING} ^p=100$
    RewriteRule ^index\.php$ 100.php [L,R=301]
    # Fails redirecting to /index.html

    RewriteRule p=100 100.php  [R=301,L]
    # Fails redirecting to /index.html

    RewriteRule ^p=100$ 100.php  [R=301,L]
    # Fails redirecting to /index.html

I tried many of the above with/without http:// preceding the redirect to URL.