Re: PerlTransHandler problem
* Rasoul Hajikhani [EMAIL PROTECTED] [2002-06-12 19:12]: Hello folks, I am trying to implement a simple PerlTransHandler to change: http://myserver/ to http://myserver.rhythm.com/ And here is my code: [-- snip --] Have you seen http://httpd.apache.org/docs/misc/rewriteguide.html? The first section is about URL layout, and the first example is about canonicalizing URLs. (darren) -- It has long been an axiom of mine that the little things are infinitely the most important. -- Arthur Conan Coyle
PerlTransHandler problem
Hello folks, I am trying to implement a simple PerlTransHandler to change: http://myserver/ to http://myserver.rhythm.com/ And here is my code: package MIS::GENERAL::FixURL; use Apache::Constants qw(DECLINED); use strict; sub handler { my $r = shift; my $uri = $r-uri; return DECLINED if ($uri =~ m/^.+\.rhythm\.com$/) $uri=~ s/^(.+)/$1\.rhythm\.com/; $r-uri($uri); return DECLINED; } 1; Here is my https.conf entry: PerlTransHandler MIS::GENERAL::FixURL And here is my error when I type: s7.rhythm.com Invalid URI in request GET / HTTP/1.0 But I get no error with: http://s7/ Can some one tell me what am I doing wrong? Thanks in advance -r
Re: PerlTransHandler problem
Quoting Rasoul Hajikhani ([EMAIL PROTECTED]): Hello folks, I am trying to implement a simple PerlTransHandler to change: http://myserver/ to http://myserver.rhythm.com/ And here is my code: package MIS::GENERAL::FixURL; use Apache::Constants qw(DECLINED); use strict; sub handler { my $r = shift; my $uri = $r-uri; return DECLINED if ($uri =~ m/^.+\.rhythm\.com$/) IIRC, the $r-uri method is normally not going yield the hostname or scheme (unless this is a proxy request). So for a request to http://www.rhythm.com/test/myfile.html $r-uri is going to return only /test/myfile.html You may want to do some logging to verify. Add use Apache::Log (); then inside your handler... my $log = $r-server-log; $log-debug(Processing request . $r-uri); Hope that helps. $uri=~ s/^(.+)/$1\.rhythm\.com/; $r-uri($uri); return DECLINED; } 1; Here is my https.conf entry: PerlTransHandler MIS::GENERAL::FixURL And here is my error when I type: s7.rhythm.com Invalid URI in request GET / HTTP/1.0 But I get no error with: http://s7/ Can some one tell me what am I doing wrong? Thanks in advance -r
Re: PerlTransHandler problem
Rasoul == Rasoul Hajikhani [EMAIL PROTECTED] writes: Rasoul I am trying to implement a simple PerlTransHandler to change: Rasoul http://myserver/ Rasoul to Rasoul http://myserver.rhythm.com/ Both of those are / as far as as $r-uri is concerned. What are you *really* trying to do? -- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 [EMAIL PROTECTED] URL:http://www.stonehenge.com/merlyn/ Perl/Unix/security consulting, Technical writing, Comedy, etc. etc. See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
Re: PerlTransHandler problem
I am realy trying to make sure that all requests for http://myserver/ are treated as http://myserver.rhythm.com/ so that my other applications that depend on reading cookies down the request chain could actually do so... -r Randal L. Schwartz wrote: Rasoul == Rasoul Hajikhani [EMAIL PROTECTED] writes: Rasoul I am trying to implement a simple PerlTransHandler to change: Rasoul http://myserver/ Rasoul to Rasoul http://myserver.rhythm.com/ Both of those are / as far as as $r-uri is concerned. What are you *really* trying to do? -- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 [EMAIL PROTECTED] URL:http://www.stonehenge.com/merlyn/ Perl/Unix/security consulting, Technical writing, Comedy, etc. etc. See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
Re: PerlTransHandler problem
A funny thing is happening with my PerlTransHandler... It is not being called at all... :( I have added warn messages but they never appear in the error log. I am at a loss and hoping that some one may have an answer... -r Lyle Brooks wrote: Quoting Rasoul Hajikhani ([EMAIL PROTECTED]): Hello folks, I am trying to implement a simple PerlTransHandler to change: http://myserver/ to http://myserver.rhythm.com/ And here is my code: package MIS::GENERAL::FixURL; use Apache::Constants qw(DECLINED); use strict; sub handler { my $r = shift; my $uri = $r-uri; return DECLINED if ($uri =~ m/^.+\.rhythm\.com$/) IIRC, the $r-uri method is normally not going yield the hostname or scheme (unless this is a proxy request). So for a request to http://www.rhythm.com/test/myfile.html $r-uri is going to return only /test/myfile.html You may want to do some logging to verify. Add use Apache::Log (); then inside your handler... my $log = $r-server-log; $log-debug(Processing request . $r-uri); Hope that helps. $uri=~ s/^(.+)/$1\.rhythm\.com/; $r-uri($uri); return DECLINED; } 1; Here is my https.conf entry: PerlTransHandler MIS::GENERAL::FixURL And here is my error when I type: s7.rhythm.com Invalid URI in request GET / HTTP/1.0 But I get no error with: http://s7/ Can some one tell me what am I doing wrong? Thanks in advance -r
Re: PerlTransHandler problem
You are only going to have Transhandlers defined in the main server or virtual host, not in any Location or Directory containers. Check and see if you have any other Transhandlers defined earlier in your httpd.conf file. If an earlier Transhandler returns OK, then later ones won't be called. Quoting Rasoul Hajikhani ([EMAIL PROTECTED]): A funny thing is happening with my PerlTransHandler... It is not being called at all... :( I have added warn messages but they never appear in the error log. I am at a loss and hoping that some one may have an answer... -r Lyle Brooks wrote: Quoting Rasoul Hajikhani ([EMAIL PROTECTED]): Hello folks, I am trying to implement a simple PerlTransHandler to change: http://myserver/ to http://myserver.rhythm.com/ And here is my code: package MIS::GENERAL::FixURL; use Apache::Constants qw(DECLINED); use strict; sub handler { my $r = shift; my $uri = $r-uri; return DECLINED if ($uri =~ m/^.+\.rhythm\.com$/) IIRC, the $r-uri method is normally not going yield the hostname or scheme (unless this is a proxy request). So for a request to http://www.rhythm.com/test/myfile.html $r-uri is going to return only /test/myfile.html You may want to do some logging to verify. Add use Apache::Log (); then inside your handler... my $log = $r-server-log; $log-debug(Processing request . $r-uri); Hope that helps. $uri=~ s/^(.+)/$1\.rhythm\.com/; $r-uri($uri); return DECLINED; } 1; Here is my https.conf entry: PerlTransHandler MIS::GENERAL::FixURL And here is my error when I type: s7.rhythm.com Invalid URI in request GET / HTTP/1.0 But I get no error with: http://s7/ Can some one tell me what am I doing wrong? Thanks in advance -r
Re: PerlTransHandler problem
Sounds like it's more of a DNS issue than a modperl issue. Depending on what your motivation for requiring the full name, you may also explicitly set ServerName myserver.rhythm.com UseCanonicalName off Quoting Rasoul Hajikhani ([EMAIL PROTECTED]): I am realy trying to make sure that all requests for http://myserver/ are treated as http://myserver.rhythm.com/ so that my other applications that depend on reading cookies down the request chain could actually do so... -r Randal L. Schwartz wrote: Rasoul == Rasoul Hajikhani [EMAIL PROTECTED] writes: Rasoul I am trying to implement a simple PerlTransHandler to change: Rasoul http://myserver/ Rasoul to Rasoul http://myserver.rhythm.com/ Both of those are / as far as as $r-uri is concerned. What are you *really* trying to do? -- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 [EMAIL PROTECTED] URL:http://www.stonehenge.com/merlyn/ Perl/Unix/security consulting, Technical writing, Comedy, etc. etc. See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
Re: PerlTransHandler problem
Quoting Lyle Brooks ([EMAIL PROTECTED]): Sounds like it's more of a DNS issue than a modperl issue. Depending on what your motivation for requiring the full name, you may also explicitly set ServerName myserver.rhythm.com UseCanonicalName off errr... should be UseCanonicalName On Quoting Rasoul Hajikhani ([EMAIL PROTECTED]): I am realy trying to make sure that all requests for http://myserver/ are treated as http://myserver.rhythm.com/ so that my other applications that depend on reading cookies down the request chain could actually do so... -r Randal L. Schwartz wrote: Rasoul == Rasoul Hajikhani [EMAIL PROTECTED] writes: Rasoul I am trying to implement a simple PerlTransHandler to change: Rasoul http://myserver/ Rasoul to Rasoul http://myserver.rhythm.com/ Both of those are / as far as as $r-uri is concerned. What are you *really* trying to do? -- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 [EMAIL PROTECTED] URL:http://www.stonehenge.com/merlyn/ Perl/Unix/security consulting, Technical writing, Comedy, etc. etc. See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
Re: PerlTransHandler problem
What it sounds like you want is: PerlTransHandler Whatever::CheckName and in CheckName.pm sub handler { my $r = instance Apache::Request(shift); if ($r-hostname !~ /rhythm\.com/) { $r-header_out(Location = http://myserver.rhythm.com.$r-uri); return REDIRECT; } else { redirect DECLINED; } } --- A redirect rule (using the Rewrite Engine) would probably be easier and better yet. simran. Quoting Rasoul Hajikhani ([EMAIL PROTECTED]): Hello folks, I am trying to implement a simple PerlTransHandler to change: http://myserver/ to http://myserver.rhythm.com/ And here is my code: package MIS::GENERAL::FixURL; use Apache::Constants qw(DECLINED); use strict; sub handler { my $r = shift; my $uri = $r-uri; return DECLINED if ($uri =~ m/^.+\.rhythm\.com$/) IIRC, the $r-uri method is normally not going yield the hostname or scheme (unless this is a proxy request). So for a request to http://www.rhythm.com/test/myfile.html $r-uri is going to return only /test/myfile.html You may want to do some logging to verify. Add use Apache::Log (); then inside your handler... my $log = $r-server-log; $log-debug(Processing request . $r-uri); Hope that helps. $uri=~ s/^(.+)/$1\.rhythm\.com/; $r-uri($uri); return DECLINED; } 1; Here is my https.conf entry: PerlTransHandler MIS::GENERAL::FixURL And here is my error when I type: s7.rhythm.com Invalid URI in request GET / HTTP/1.0 But I get no error with: http://s7/ Can some one tell me what am I doing wrong? Thanks in advance -r