[EP-tech] Re: How to emulate former persistent uri schemes?

Florian Heß hess at ub.uni-heidelberg.de
Mon Sep 17 14:53:24 BST 2012


Am 14.09.2012 11:46, schrieb Florian Heß:
> Hi,
>
> to have persistent urls is just fine. Yet, as a logical consequence,
> that means that the validity/availability of a URI must be guaranteed
> even no matter which repository software happens to work behind the scenes.
>
> Thus, how can I make EPrints emulate our former persistent document URLs
> according to the scheme $base/volltexte/$year/$id[/$ext/$file]? Hope
> that is possible in EPrints without hacking EPrints::Apache:Rewrite, is it?
> (The year part doesn't need to match properly, i.e. whether a document
> is cited by volltexte/1999/445 or volltexte/2071/441, it should be no
> problem so we avoid requesting the database. The ext part neither.)
>
> Mod_rewrite rules or ScriptAlias directives (by which we could install a
> cgi script to handle anything after "/volltexte/...") do not seem to be
> respected while that module is in effect, right?
>
>

Hi,

just as a note for those who run into the same problem:

currently trying with

     # in: archives/heidok/cfg.d/20_baseurls.pl
     $c->{rewrite_exceptions} = [ '/heidok/volltexte' ];

and

<VirtualHost *:80>
     ...
     ScriptAliasMatch /([a-z]+?)dok/volltexte/ 
/eprints/cgi/ubhd_emulate_legacyurl
     ...
</VirtualHost>

$ cat /eprints/cgi/ubhd_emulate_legacyurl
#!/usr/bin/perl

use strict;

use FindBin;
use lib "$FindBin::Bin/../perl_lib";

# we run in plain CGI mode, not in EPrints mod_perl environment:
use EPrints qw(no_check_user);

my $query = $ENV{REQUEST_URI};
my (undef,  $instance, undef, $id,undef,$file) = split /\/+/, $query;
   # ^domain            ^ year     ^ ext

my $repo = EPrints->new->repository($instance);

# TODO: redirection

__END__

Works fine so far ... :-)


Kind regards,
F Heß


-- 
UB Heidelberg (Altstadt)
Plöck 107-109, 69117 HD
- Informationstechnik
- WWW-Redaktion
http://www.ub.uni-heidelberg.de/



More information about the Eprints-tech mailing list