Hi,
ich habe eine Catalystanwendung die über
http://hosta:porta/myapp_prefix zu erreichen ist. Nun ist dieser Host nicht direkt zu erreichen sondern nur über eine Apacheweiterleitung
https://hostb/myapp_prefix/
Damit die die von MyApp generierten Links funktionieren gibt es in lib/MyApp.pm die Funktion
prepare_path:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sub prepare_path {
my $c = shift;
$c->maybe::next::method( @_ ) ;
my $base_uri_prefix = $c->config->{base_uri_prefix} ;
my @path_chunks = split m[/], $c->request->path, -1;
if (@path_chunks && $path_chunks[0] eq $base_uri_prefix ) {
shift @path_chunks ;
my $path = join( '/' , @path_chunks ) || '/' ;
$c->request->path( $path ) ;
} else {
$c->request->uri->path( "$base_uri_prefix/" . $c->request->path ) ;
}
my $base = $c->request->base;
my $tbp = $base->path ;
$tbp =~ s/hosta:porta/hostb/ ;
$base->path( $tbp . "$base_uri_prefix/" ) ;
$base->host( 'hostb' ) ;
$base->port( undef ) ;
$base->scheme( 'https' ) ;
$c->request->base( $base ) ;
return ;
}
Funktioniert soweit auch gut, Links werden mit
c.uri_for( '/foobar' ) korrekt generiert. Verwende ich nun aber für Pager einen Link der mit
[% c.req.uri_with( { page => pager.previous_page } ) %] erzeugt wird, so wird dieser Link nicht für hostb (von aussen erreichbar) erzeugt, sondern für hosta:porta (nicht erreichbar).
Hat jemand eine Idee, wie ich prepare_path ändern muß, damit auch die c.req.uri_with Links stimmen?
Vielen Dank im Voraus,
Daniel
modedit Editiert von GwenDragon: 1) Links in Code-Tags gesetzt.
2) Template-Code in Code-Tags gesetzt
Grund:
Links, die als Beispiel dienen, bitte nicht direkt im Text angeben, wenn sie nicht erreichbar sind!
Code sicherheitshalber auch in Code/Shortcode-Tags setzen!
Bitte auch http://www.perl-community.de/bat/poard/markup_help... lesen.
Last edited: 2011-09-11 15:14:40 +0200 (CEST)