X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FEngine%2FCGI.pm;h=fae6a9aa000d778519d9f0a2885ab645f1ceebba;hb=e701c5c61735b6aae5332b16522bbc800a626896;hp=56d988f34960a47a306dffd736a971bcd135cec8;hpb=dfc21fff16f38b0409cf154de7f557f599726e2f;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Engine/CGI.pm b/lib/Catalyst/Engine/CGI.pm index 56d988f..fae6a9a 100644 --- a/lib/Catalyst/Engine/CGI.pm +++ b/lib/Catalyst/Engine/CGI.pm @@ -110,9 +110,16 @@ sub prepare_path { local (*ENV) = $self->env || \%ENV; my $scheme = $c->request->secure ? 'https' : 'http'; - my $host = $ENV{HTTP_HOST} || $ENV{SERVER_NAME}; - my $port = $ENV{SERVER_PORT} || 80; - my $base_path = $ENV{REDIRECT_URL} || $ENV{SCRIPT_NAME} || '/'; + my $host = $ENV{HTTP_HOST} || $ENV{SERVER_NAME}; + my $port = $ENV{SERVER_PORT} || 80; + my $base_path; + if ( exists $ENV{REDIRECT_URL} ) { + $base_path = $ENV{REDIRECT_URL}; + $base_path =~ s/$ENV{PATH_INFO}$//; + } + else { + $base_path = $ENV{SCRIPT_NAME} || '/'; + } # If we are running as a backend proxy, get the true hostname PROXY_CHECK: @@ -130,7 +137,7 @@ sub prepare_path { $port = $c->request->secure ? 443 : 80; } - my $path = $base_path . $ENV{PATH_INFO}; + my $path = $base_path . ( $ENV{PATH_INFO} || '' ); $path =~ s{^/+}{}; my $uri = URI->new;