mod_rewriteでパスを書き換えてクエリを付加しても、methodがPOSTだとcgi.FieldStorage()はそれを拾ってくれない

これはPOSTのときはstdinからos.environ['CONTENT_LENGTH']の長さだけ拾ったものをクエリストリングとして認識するからなんですが、

#cgi.pyのこの部分
        if headers is None:
            headers = {}
            if method == 'POST':
                # Set default content-type for POST to what's traditional
                headers['content-type'] = "application/x-www-form-urlencoded"
            if 'CONTENT_TYPE' in environ:
                headers['content-type'] = environ['CONTENT_TYPE']
            if 'CONTENT_LENGTH' in environ:
                headers['content-length'] = environ['CONTENT_LENGTH']

                ...

        if 'content-length' in self.headers:
            try:
                clen = int(self.headers['content-length'])
            except ValueError:
                pass
            if maxlen and clen > maxlen:
                raise ValueError, 'Maximum content length exceeded'
        self.length = clen

        self.list = self.file = None
        self.done = 0
        if ctype == 'application/x-www-form-urlencoded':
            self.read_urlencoded()
        elif ctype[:10] == 'multipart/':
            self.read_multi(environ, keep_blank_values, strict_parsing)
        else:
            self.read_single()

しかしmod_rewriteが付加したクエリはos.environ['QUERY_STRING']に入っているので、

#hoge.py?foo=foovalue&bar=barvalue に書き換えた

q = cgi.parse_qs(os.environ['QUERY_STRING'])
print q

>> { 'foo': ['foovalue'], 'bar': ['barvalue'] }

とすればこれを取得できます。
もちろんcgi.FieldStorage()に影響はないのでPOSTしたデータはそちらから取得可能。