httpd
versions 2.15 and newer implement the Common
Gateway Interface, CGI. CGI
interface should be favoured over this old one. However, if you are running you server on a VMS machine, a port of CGI/1.0 code does not yet (February 1994) exist for it, so you can only use this one.
httpd
2.15 or newer, old-style script
filenames must end with .pp
suffix.
This allows the server to figure out the correct calling scheme. If
you are running older version of httpd
where you only
have the old-style script interface, scripts should
not end in .pp
.
The URLs referring to these scripts should never
contain the .pp
suffix. This makes it easier to later
upgrade the script to CGI/1.0 without having to change the documents
referring to it.
.pp
suffix. Nothing
else needs to be changed -- references to these files are still made
with URLs not ending in .pp
, so all old
links still work.
/htbin/.
The next pathname component is taken to be the
script name. Rest of the URL is passed to the script as the first
parameter.
HTBin
directive:
HTBin /directoryNote: The
Exec
rule in version 2.15
obsolites the HTBin
directive.
Examples:
/htbin/foo/x/y/z?name1=value1&name2=value2is calles as:
/.../foo /x/y/z name1= value1 name2= value2
/htbin/foo?name1=value1&name2=value2is calles as:
/.../foo '' name1= value1 name2= value2Notice empty first parameter!
Even if values contain blanks they are passed as a single parameter:
/htbin/favorite/music?band=Vaya+Con+Dios&song=Time+Fliesis called as:
/htbin/favorite /music band= 'Vaya Con Dios' song= 'Time Flies'(Actually every parameter is always quoted, but the script programmer never sees this because the shell has already stripped them away, and I didn't have enough energy to write them everywhere.)
Content-Type:
field, and after that there must
be an empty line indicating the end of the header section. After that
the actual document is output (in the corresponding format). Example:
Content-Type: text/html <HEAD><TITLE>Example page</TITLE></HEAD> <BODY> ... </BODY>
Location:
field with the actual URL:
Location: http://.../...In this case everything else output by the script is ignored.
As the #label part of the URL is exclusively meant
to be used by the client, there is no way the server could handle it.
Therefore, if you need to specify #label after the URL, you
must use full URLs in
Location:
field, not the
redirection-on-fly feature.