if ($redirect = $shortnames->get($fname, WAIT, 1)) { if ($redirect !~ /$r->server()->server_hostname/) { $r->content_type('text/html'); $r->header_out ( Location => $redirect ); $log->debug($redirect);
$r->send_http_header; return REDIRECT; } Regards, Tim Tompkins ---------------------------------------------- Programmer http://www.arttoday.com/ http://www.rebelartist.com/ ---------------------------------------------- ----- Original Message ----- From: Martin Haase-Thomas To: [EMAIL PROTECTED] Sent: Wednesday, February 06, 2002 8:21 AM Subject: QUESTION Hi all, I hope there'll be someone here to help we with a mod_perl prob, of which I thought first it wouldn't be one. I refer to the "Writing Apache Modules" book by Stein/MacEachern. The prob is quite simple: I have to redirect certain requests under certain conditions to another URL (and please believe me: I tried with mod_rewrite, this way seems to be more efficient). I'm using Apache 1.3.22 on Debian Linux 2.4.17. These are the lines from my httpd.conf: PerlFreshRestart On PerlTaintCheck On PerlSetEnv SHORTNAMES /etc/apache/shortnames.txt PerlAddVar PROJECT_DOCUMENT_ROOT /home/disp05/app/fn/ PerlRequire /usr/local/sbin/appstart <Location /> SetHandler perl-script PerlHandler Apache::StaticServer </Location> The stanza in StaticServer.pm that fails is: if ($redirect = $shortnames->get($fname, WAIT, 1)) { if ($redirect !~ /$r->server()->server_hostname/) { $r->content_type('text/html'); $r->header_out ( Location => $redirect ); $log->debug($redirect); return REDIRECT; } ... } $shortnames is an Apache::SharedMem segment, containing a vast amount of shortnames as keys and the corresponding URLs as values. The funny thing is now, that although I do everything exactly as I find it in the book on p.125 (content_type, header_out, REDIRECT), I get pure nonsense. This is what a libwww-perl client displays when I try to access the address: 500 (Internal Server Error) unexpected EOF before status line seen Client-Date: Wed, 06 Feb 2002 13:40:25 GMT This is what I find in access_log: 192.168.255.75 - - [06/Feb/2002:14:46:24 +0100] "GET /psycho HTTP/1.0" 200 - "-" "libwww-perl/5.50" And this is what stands in error_log: [Wed Feb 6 14:46:24 2002] [debug] /usr/local/share/perl/5.6.1/Apache/StaticServer.pm(45): [client 192.168.255.75] http://www.domain.de/app/fn/portal_welcome_jsp/52329.html The error log proves that the second if() matches, as the entry comes from my $log->debug(...). Has anyone got an idea? I'm close to depression -;) Many thanx in advance Martin