You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by David Robinson <dr...@ast.cam.ac.uk> on 1995/12/01 17:00:00 UTC

Re: WWW Form Bug Report: "QUERY_STRING not set for index documents" on SunOS 4.x (fwd)

> From: WebMaster@mei.com
> To: apache-bugs%apache.org@organic.com
> Date: Wed Nov 29  6:00:33 1995
> Subject: WWW Form Bug Report: "QUERY_STRING not set for index documents" on SunOS 4.x
> 
> Operating system: SunOS 4.x, version: 
> 
> Symptoms:
> --
> Pretty minor...
> My index document is a script that calls itself
> with arguments
> i.e.
> 
> http://server/dir/?args
> 
> QUERY_STRING is undefined.  However, if I use 
> 
> http://server/dir/index.cgi?args
> 
> it does get set.  This works under Apache 0.6.5,
> but doesn't under 0.8.14.
> 
> Maybe not worth fixing/maybe this is the way it
> _should_ act.

The reason for this is that Apache 0.8.14 does a complete internal redirect for
a directory index. It redirects to the first DirectoryIndex URL that exists.
As this is a redirect, information on the original request (e.g. original
query information) is available to your CGI script via the REDIRECT_xxx
variables. (e.g. REDIRECT_QUERY_STRING.)

This behaviour adds the feature that your directory index could be anywhere on
the system. e.g.
DirectoryIndex /cgi-bin/doindex

Client requests http://server/dir/?wibble

The server internally redirects (i.e. restarts processing with a new URL)
to http://server/cgi-bin/doindex

A similar behaviour occurs with the Redirect directive; if I
Redirect /foo http://wombat/
then a request for http://server/foo/bar?wibble
is redirected to http://wombat/bar without ?wibble.

I suppose the best solution would be to allow DirectoryIndex and Redirect
to take a placeholder for the query string; e.g.
DirectoryIndex index.cgi?${QUERY_STRING}
then the query string of the original request would get substited in
the redirection.

 David Robinson.