problem with redirect_to() and VirtualHost

I'm running into a problem with redirect_to() and Apache's
VirtualHost facility. I have probably have something set up
wrong, but I'm not even sure how to approach the problem.

Background:

  We have DNS set up to return the domain's address for all
  sub-domains. So, "dig xyz.cfcl.com" returns the same IP
  address as "dig cfcl.com".

  Our router forwards ranges of port numbers to specified
  machines. So, a request on port 1234 might go to "fido".

  We are using Apache's VirtualHost facility to redirect (?)
  requests to certain machines, as:

    <VirtualHost *:80>
      ServerName xyz.cfcl.com
      ServerAdmin rdm@cfcl.com
      ErrorLog /dev/null
      CustomLog /dev/null common
      ProxyRequests Off
      ProxyPass / http://fido.cfcl.com:1234/
      ProxyPassReverse / http://fido.cfcl.com:1234/
    </VirtualHost>

  As a result, requests to http://xyz.cfcl.com are answered
  by a Rails server that is set up to answer port 1234 on
  fido.cfcl.com. This (mostly) works fine, both inside and
  outside of the LAN.

Problem:

  If a user enters an invalid value into a form, we want to
  set up the "flash" hash and redirect back to the page that
  contained the form. Something like:

    flash[:notice] = get_errors()
    redirect_to(:back)

  This works (on the LAN) when the URL of the form page is:

    http://fido.cfcl.com:1234/conf/edit_new

  However, if the URL is:

    http://xyz.cfcl.com/conf/edit_new

  the redirect results in:

    Proxy Error

    The proxy server received an invalid response from an
    upstream server.

    The proxy server could not handle the request POST
    /conf/create.

    Reason: Document contains no data

  The server says:

    [2007-06-21 14:18:42] ERROR URI::InvalidURIError:
    the scheme http does not accept registry part:
    xyz.cfcl.com (or bad hostname?)
    /usr/local/lib/ruby/1.8/uri/generic.rb:729:in `merge'
    ...

Any ideas on what might be wrong or (better) how to fix it?

-r