g1smd - 9:44 pm on Jul 26, 2013 (gmt 0)
In the RewriteRule that acts as an internal rewrite the RegEx pattern must match the path part of the requested URL. The RegEx pattern cannot ever match the protocol or hostname. The rule target of a rewrite must be the internal filename and parameter where the content really resides on the server hard drive; "internal" means do not include protocol or hostname.
For the redirect, the RegEx pattern in the rule must match the requested path, e.g. index.php, and there must be a preceding RewriteCond looking at THE_REQUEST for the presence of the page=about parameter to ensure that this is an external request and not merely the result of a previous internal rewrite. The rule target will be the full new format URL for the content.
There are two reference systems here. URLs that are used "out there" on the web and server filepaths and filenames that are used "here" inside the server. They are not at all the same thing. They are merely related by the specific server configuration that is applied using various directives including RewriteRules and other things.
If the rule target includes a hostname or the rule has an [R] flag, it is a redirect.
You want to:
1. Link to example.com/about-us from the pages of your site.
2. Redirect requests for example.com/index.php?page=about to example.com/about-us using a RewriteRule configured as a 301 redirect.
3. Rewrite requests for example.com/about-us to internally fetch content from /index.php?page=about on the server hard disk without revealing what that internal location actually is.