On Tue, 2003-07-22 at 03:10, Jamie Krasnoo wrote:
> On Tue, 2003-07-22 at 02:50, Stas Bekman wrote:
> > Jamie Krasnoo wrote:
> > > What would be the best way to redirect in MP2? How would I set the
> > > Location in the header?
> >
> > not any different from mp1 (assuming that you have been working with mp1
> > before, but the mp1 documentation and literature can be used as a reference
> > for most mp2 things).
> >
> > > something like this?
> > >
> > > my $r = Apache->request;
> > > # docs say $r->header_out and family are now deceased.
> >
> > that's right. And $r->headers_out() is available in mp1 for several years and
> > should be used in mp1 as well to easy the transition.
> >
> > > $r->headers_out(Location => '/some/place.html');
> > > return Apache::DECLINED;
> >
> > why DECLINED? just return Apache::OK.
>
> My mistake, its been a while and I'm just getting back into it. So its
> like I'm learning everything all over again. You can use OK? The example
> in the Eagle book uses REDIRECT within a handler for redirection. So I'm
> assuming it goes the same for MP2.
>
> >
> > I'm also not sure why do you use Apache->request, I assume you are inside a
> > handler, not a registry script. Since if you are inside a registry script you
> > don't need to return anything at all.
>
> I was using Apache->request as an example. I guess it's a poor one. I
> should have just used 'my $r = shift;' to get the point across.
I got the redirection to work. However I don't think its working as it
should. Nowhere in the docs does it say that you have to load APR::Table
with Apache::RequestRec and Apache::RequestIO to have $r->headers_out()
to work. Without APR::Table loaded I get the error:
[Tue Jul 22 03:56:35 2003] [error] [client 192.168.0.2] Can't locate
object method "STORE" via package "APR::Table" at
/www/web/perl/MyApache/Redirect.pm line 17.
Place APR::Table in and the error goes away. Here's a sample script
below.
Jamie Krasnoo
package MyApache::Redirect;
use strict;
use warnings;
use Apache::RequestRec;
use Apache::RequestIO;
# comment out 'use APR::Table;' to get error, uncomment to make it go
# away.
# use APR::Table;
use Apache::Const -compile => qw(REDIRECT);
sub handler {
my $r = shift;
$r->content_type('text/html');
$r->headers_out->{Location} = 'http://www.yahoo.com/';
return Apache::REDIRECT;
}
1;