Mod_Rewrite does the same thing in a few less lines:
RewriteEngine On
RewriteCond /your/document_root/%{REQUEST_FILENAME} !-f
RewriteRule ^/S([^/]+)/(.*) /$2 [E=SESSION_ID:$1]
the RewriteCond statement just makes sure you don't (for some strange
reason) have a file/directory that is of the same name as the request, and
it's completely removable
This also doesn't change the $r->uri value, but I find that kind of a
blessing.
Jay Jacobs
LachNet Inc.
On Thu, 1 Jun 2000, Michael Nachbaur wrote:
> Well, from what I'm reading, it looks like you don't want it to create sessions for
>all images, CSS, et al on the first page load, right? Instead of deleting sessions
>that aren't used, you could try just not serving sessions to documents that don't
>need 'em.
>
> Like in my setup, I've put in a PerlTransHandler pointing to a custom perl module
>I've created:
> PerlTransHandler Apache::URISession
>
> Then, in Apache::URISession, I've done the following:
> package Apache::URISession;
> use strict;
> use Apache::Constants qw(:common);
>
> sub handler {
> my $r = shift;
> my $uri = $r->uri;
> my ($session) = $uri =~ m|/S([0-9a-f]{32})|;
> $uri =~ s|/S[0-9a-f]{32}||;
> my $filename = $r->document_root . $uri;
>
> $ENV{'SESSION_ID'} = $session if ( $session );
> print STDERR "SESSION: " . $session, "\n";
> print STDERR "URI : " . $uri, "\n";
> $r->uri($uri);
> $r->filename( $filename );
> return OK;
> }
>
> 1;
> __END__
>
> There might be another module that does this, but I wanted to embed the session key
>in the URL. So, in this example, it'll redirect the user to an address like this one:
> http://127.0.0.1/S94b419c5908ae5f0773a4bfd61cbec1d/index.html
>
> It'll rip the session out, put it in ENV{SESSION_ID}, and continue processing. I'm
>not sure if I should be returning an OK there or not (I'm new to using handlers), but
>it does the job.
>
> Also, keep in mind, I'm using the new Apache::Session which creates 32-character
>keys, which is why I'm doing the pattern match check like {32}.
>
> -man
>
> -----Original Message-----
> From: Niral Trivedi [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, June 01, 2000 12:57 PM
> To: [EMAIL PROTECTED]
> Subject: Apache::Session
>
>
> All,
>
> I need to clear myself on a small issue regarding Apache::Session.
>
> As per my understanding, Apache::Session will store session information
> in a backing store-either a flat file or in some database. And
> everytime, request comes in, it will check for sessionID in backing
> store and retrieve all information for that session. If request is new
> than it will create new sessionID and also create an entry in backing
> store..
>
> Now, only way to remove this information from backing store is to do
> 'tied(%session_hash)->delete', Am I right? I mean is there any way we
> can remove these entries by setting 'time_out_interval' or something
> like that??
>
> Because if we do 'tied(%session_hash)->delete' then it will create new
> session for every request... So, I was thinking of not doing
> 'tied->delete' but write a small cron script which runs at specified
> interval and removes entry from backing store which are older than some
> time...
>
> Because concept of 'time_out_interval' does exist in Apache JServ and
> other application servers..
>
> Any ideas, suggestions or pointers on this???
>
> Thanks again..
>
> Niral
> --
>