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
> 
> 

Reply via email to