Dynamically Changing the Document Root
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
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
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
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]