Your pattern requires /page/ to be present. That's why it fails for request without page number.
If you really do require the page number to not be present for page 1, then you will need a second RewriteRule for that.
However, if you do do that, I am willing to bet that requesting page 1 either with or without the page number will both return the same content and that's a duplicate content issue.
Additionally, URLs like /cid/345/page and /cid/ have no meaning - but Google and others will request them for discovery. Using folder levels in your URLs is entirely inappropriate.
Your URLs should look like example.com/c147-p1 (or example.com/c147 ) example.com/c147-p2 example.com/c148-p1 etc.
You do not need .php to be present in your URLs. In fact things become much easier all round if you use extensionless URLs for pages.
URLs for folders always end with a trailing slash.
URLs for files (css, js, images, docs) should usually have an extension.
Do not use (.*) in the first capture. See previous three thousand threads with this warning. If the cid is always numeric, use [0-9]+ instead. Likewise for the page number. This makes requests for cid "4G47" and page "4ev5" directly fail at the Apache level without bogging down your PHP script.
From your PHP script, you must still return a 404 header for all non-valid cid and/or page number combinations.
Each cid should have a unique title and meta description defined, but make sure you also include the page number in the title and meta description so that they are both still unique per page.
Msg#: 4444386 posted 2:29 am on Apr 24, 2012 (gmt 0)
Do you mean, how do you add the query string in a Rewrite, or how do you take it away in a Redirect? :)
I can't say it's been posted 3000 times, because I haven't been around that long,* but if you putter around this forum you will find some boilerplate on Query Strings and Parameters. Won't repost it here, because it's pretty long and it's only been a few days since last time.
* (joined date about 10 yrs ago x (say it about once a day - allow for holidays)) = yup. He probably really has said it 3000 times ;)