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;


Reply via email to