在 url 中添加额外字段,但在 Catalyst 框架的 url 处理中避免该字段

发布于 2025-01-01 12:30:48 字数 454 浏览 4 评论 0原文

假设我有一个 url

http://www.somesite.com/path/to/catalyst/controller

并且我想将其重定向到

http://www.somesite.com/extra-part/path/to/catalyst/controller

这个额外部分应该只在 url 中,并且不应该被考虑用于 Catalyst 的 URL 处理。

我发现,我们可以为此继承/覆盖prepare_path方法,但我无法正确使用它。

我找到了这个链接: Catalyst Wiki

但仍然需要帮助。

Suppose I have a url

http://www.somesite.com/path/to/catalyst/controller

And I want to redirect this to

http://www.somesite.com/extra-part/path/to/catalyst/controller

This extra-part should only be in url, And should not be considered for URL handling of Catalyst.

I found that, we can inherit/override prepare_path method for this but I couldn't use it properly.

I found this link for that :
Catalyst Wiki

But still help needed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

前事休说 2025-01-08 12:30:48

lib/MyApp.pm 内部,我有一个函数 prepare_path ,如下所示:

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 ;

    # Create modified request path from any remaining path chunks:
    my $path = join( '/' , @path_chunks ) || '/' ;

    # Stuff modified request path back into request:
    $c->request->path( $path ) ;
  } else {
    # Modify the path part of the URI to look as if it had a prefix:
    $c->request->uri->path( "$base_uri_prefix/" . $c->request->path ) ;
  }
}

myapp.conf 中定义:

base_uri_prefix   extra-part

Inside of lib/MyApp.pm I have a function prepare_path that looks like this:

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 ;

    # Create modified request path from any remaining path chunks:
    my $path = join( '/' , @path_chunks ) || '/' ;

    # Stuff modified request path back into request:
    $c->request->path( $path ) ;
  } else {
    # Modify the path part of the URI to look as if it had a prefix:
    $c->request->uri->path( "$base_uri_prefix/" . $c->request->path ) ;
  }
}

And in myapp.conf is defined:

base_uri_prefix   extra-part
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文