Why is this happening? If I append any query string parameters, the $_GET array is correctly filled on both the local development server and the production server. But for some reason the behavior of this code seems to vary across servers.
Did you change the default .htaccess that was included with Fuel (in the public directory) or do you have a setup that does not use this file?
For different webserver environments, you need different rewrite rules. For example, for an fgci environment, you need to redirect to index.php?your/segments. If you use this rewrite in an apache/sapi environment, the question mark will indicate there's a query string attached.
The rewrite rules included in the default .htaccess file in /public will take all these different environments into account, and selects the correct way of rewriting.
What exact webserver setup is running on the production server?
Can you dump $_SERVER in your index.php? If you don't want the info public, you can mail it to me at "wanwizard<at>fuelphp.com". I can use it to simulate your environment here, to see why this happens.
my laptop (disk) crashed on Satuday, spend the entire weekend rebuilding it. It's slowly becoming usable again, so hopefully I'll have some time tonight.
New disk, setup from scratch, now about 90% usable... ;-) Most important, my webserver and DB, and all my virtual hosts are back up!
I've ran the tests with the two $_SERVER dumps you mailed me, and that is not causing it. So it's PHP's internal parsing that already populates $_GET incorrectly.
Are you using the .htaccess we've supplied, in the public folder, or using your own one? If your own, can you post it?