So you've got your Apache server serving up static HTMLcontent, and you've got some cool new Zope applications as well. Now, incase you were wondering, it is possible for the twain to meet - and thisarticle tells you how, with a step-by-step guide to the process ofserving up your Zope content through Apache.
Now, while this is fairly simple, there's one very important caveat withthis method. You won't be able to access the Zope management interfacevia PCGI, because Apache has trouble passing authentication headers overthe CGI "bridge" that's been constructed between Zope and itself.
Luckily, there does exist a solution for this (although it comes with acaveat of its own, discussed on the next page). This solution involvesusing Apache's URL rewriting engine to artificially pass theauthorization credentials to Zope over CGI.
In order to do this, first make sure that your Apache build includessupport for URL rewriting (you can do this by looking for"mod_rewrite.c" in the output of "httpd -l"). If it does, great - skipthe configure-build-install process below and jump straight intoconfiguring the server. If not, you'll need to recompile Apache withsupport for URL rewriting.
First, untar the Apache distribution to a directory on your system.
$ cd /tmp/sources
$ tar -xzvf apache_1.3.20.tar.gz
Next, configure Apache to activate the URL rewriting module.
$ cd /tmp/sources/apache_1.3.20
$ ./configure --enable-module=rewrite
Compile and install the package.
$ make
$ make install
All done? Now add the following lines to Apache's "httpd.conf"configuration file.
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^/Zope(.*) /usr/local/apache/cgi-bin/Zope.cgi/$1
[e=HTTP_CGI_AUTHORIZATION:%1,t=application/x-httpd-cgi,l]
This tells the server to use its URL rewriting engine to automaticallypass all URLs containing /Zope to the "Zope.cgi" script. Simultaneously,it sets the environment variable HTTP_CGI_AUTHORIZATION to reflect thecurrent authentication status, thereby (hopefully) solving theauthentication problem.
Restart the server, and try accessing the URL again. This time, Apacheshould successfully pass your authentication credentials to Zope, andyou should be able to access the Zope management interface.
If it didn't work, you're not toast yet - flip to the next page for analternative solution.