Dynamically Changing the Document Root

2002-05-17 Thread simran

Hi All, 

We are currently building a mod_perl application that has a content
management component in it. 

After editing a page, we want to be able to give people a 'Preview your
site' ability where they are view a 'preview/staged' mode of their site.

The 'staged' version of their site is stored in a different directory,
and if i could just changed the document_root dynamically, most(?) of
our issues would be over. 

Is there a way to do this? The documentation does not have any reference
to be able to change the document root (just get it via
$r-document_root). 

simran.

ps: We are intending on having something like where when people go to
http://www.testsite.com/preview/contactus/index.html we strip out
the /preview from the URL (i assume i can change this via
$r-uri... and change the document root from 
/home/www/testsite.com/current to /home/www/testsite.com/stage



Re: Dynamically Changing the Document Root

2002-05-17 Thread Marc Slagle

 The 'staged' version of their site is stored in a different directory,
 and if i could just changed the document_root dynamically, most(?) of
 our issues would be over.

 Is there a way to do this? The documentation does not have any reference
 to be able to change the document root (just get it via
 $r-document_root).

You might want to use a translation handler (Chapter 7 of the Eagle book.)

We did something similar to this, where if a browser asks for an index page
it forces apache to use a db file to get its filename/path.  You could check
the incoming path for the Preview mode and set $r-filename.

Something like:

my $uri=$r-parsed_uri;
my $Path=$uri-path;

if ($Path =~ /Preview/)
{
$r-filename($Path_to_file_on_filesystem);
return OK;
}

return DECLINED;

The above might not exactly do it, but its just a rough example.  The return
OK will make apache skip its own URL to file translation stuff, where return
DECLINED should let apache continue as normal (reading httpd.conf for
finding paths, etc.)

Marc Slagle







Re: Dynamically Changing the Document Root

2002-05-17 Thread Geoffrey Young

 
 Is there a way to do this? The documentation does not have any reference
 to be able to change the document root (just get it via
 $r-document_root). 


see recipe 4.3 in the cookbook for a description of $r-document_root 
and the perils involved.  the minimum you should be aware of is that 
DocumentRoot is a server attribute, not a request attribute, so 
changing it affects all future requests to the child process unless 
you set it back.

the code we use as an example is here

   http://www.modperlcookbook.org/code/ch04/Cookbook/Userdir.pm

and all of chapter 4 can be viewed online here

   http://www.webreference.com/programming/perl/cookbook/

HTH

--Geoff




Re: Dynamically Changing the Document Root

2002-05-17 Thread Per Einar Ellefsen

At 09:59 17.05.2002, simran wrote:
ps: We are intending on having something like where when people go to
 http://www.testsite.com/preview/contactus/index.html we strip out
 the /preview from the URL (i assume i can change this via
 $r-uri... and change the document root from
 /home/www/testsite.com/current to /home/www/testsite.com/stage

You can't change the document root, but you don't necessarily need to 
either. You could set up an alias in httpd.conf
VirtualHost foo
Alias /preview/ /home/www/testsite.com/stage/
:
/VirtualHost

Or you could use a generic URI translation handler which would do the URI 
translation, running in /preview
Location /preview
PerlTransHandler My::Foo
/Location
then My::Foo maps the URI to a filename or something like that.


-- 
Per Einar Ellefsen
[EMAIL PROTECTED]