Thread Catalyst - prepare_path
(0 answers)
Opened by dgw at 2011-09-11 15:02
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: Code (perl): (dl
)
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) |