/subdir/subdir/some.cgi
次のメソッドを呼び出すファイルにリダイレクトしようとしています:
$self->redirect_to("/anothersubdir/some.html");
ただし、上記の呼び出しは/subdir/subdir/some.cgi/anothersubdir/some.html
代わりににリダイレクトされます。では、実際にリダイレクトするにはどうすればよい/anothersubdir/some.html
ですか?
/subdir/subdir/some.cgi
次のメソッドを呼び出すファイルにリダイレクトしようとしています:
$self->redirect_to("/anothersubdir/some.html");
ただし、上記の呼び出しは/subdir/subdir/some.cgi/anothersubdir/some.html
代わりににリダイレクトされます。では、実際にリダイレクトするにはどうすればよい/anothersubdir/some.html
ですか?
への絶対パスを指定する必要があるようですredirect_to
。
なんで ?redirect_toは... url_forと同じ引数を 言うため、絶対的なものでない限り、その URL を生成します。ドキュメントはあまり明示的ではありませんが、ソースはそうです。
したがって、新しい Mojo::URL オブジェクトを構築して、次のように渡すことができますredirect_to
。
my $url = Mojo::URL->new->base($self->req->url->base->clone)->base->userinfo(undef);
$url = $url->path('/anothersubdir/some.html');
$self->redirect_to( $url );
または、使用しないようにコピーredirect_to
して変更しますurl_for
sub redirect_raw {
my $self = shift;
# Don't override 3xx status
my $res = $self->res;
#~ $res->headers->location($self->url_for(@_)->to_abs);
$res->headers->location();
return $self->rendered($res->is_status_class(300) ? () : 302);
}