FWIW, instead of:
Redirect /admin /index.cfm/admin:home/index
You probably wanted something like this:
RewriteRule ^/admin(/)?$ /index.cfm/admin:home/index [R=301]
The $ in the match expression represents the ending anchor of the
request string. I also allow for an optional trailing slash there. The
[R=301] flag is for a permanent redirect. So, you use RewriteRule
instead of Redirect to get the power of regular expressions, but both
result in the same type of redirect.
Actually, this would do the same trick:
RedirectMatch 301 ^/admin(/)?$ /index.cfm/admin:home/index
You may also want to read the docs on the QSA flag for rewrites. You
don't need it in either case in your first example, though it
shouldn't cause any harm. It's a bit confusing, but basically, it's
only needed if you specify a query string in your RewriteRule's
substitution. It's best demonstrated by example--given a request of /
foo/?param=val consider these rules and the result of each...
RewriteRule ^/foo/$ /index.cfm
--> /index.cfm?param=val
RewriteRule ^/foo/$ /index.cfm?newparam=newval
--> /index.cfm?newparam=newval
RewriteRule ^/foo/$ /index.cfm?newparam=newval [QSA]
--> /index.cfm?param=val&newparam=newval
Notice the only time you lose the original query string is if you
explicitly specify a query string in your substitution and do not use
the QSA flag.
Cheers,
Jamie