【问题标题】:Get final url after all redirects in laravel在laravel中进行所有重定向后获取最终网址
【发布时间】:2019-02-22 07:27:42
【问题描述】:

我有从分页生成的网址:

$next = $articles->nextPageUrl();

但是这个新的 url 总是会导致重定向。出于 SEO 原因,我需要将最终 url 放在那里(在所有重定向之后生成)。我怎样才能在 Laravel 中正确实现这一点?

例如nextPageUrl() 生成的 URL 是 /page/83?page=4,但它会重定向到 /blog?page=4。我应该以某种方式得到/blog?page=4

如何在 Laravel 中正确实现这一点?

【问题讨论】:

  • 我看不到 nextPageUrl() 生成的 url 如何导致重定向。它只是将page 查询参数添加到当前路径。你能澄清一下吗? dd($users->nextPageUrl()); // http://example.com/path?page=2
  • 分页实际上根本不重要。问题更笼统。

标签: php laravel url


【解决方案1】:

一种方法是手动跟踪重定向(5.4 版本语法):

// Call the given Closure / class@method and inject its dependencies.
$redirect = App::call('App\Http\Controllers\SomeController@someMethodWithRedirect');

/** @var RedirectResponse $redirect */
$redirect->getTargetUrl();

如果调用的函数不是纯函数(是否有任何数据库持久化等),则此方法不适合。

【讨论】:

  • 我还以为可能会有\Url::getFinalUrl($url) 之类的东西,好像没有这种东西。
【解决方案2】:

在这个方法中你需要声明输入类型Page

示例:

只需按照以下步骤 在你的控制器中

 $namefile = $request->get('filename');
 return view('BladeFilename')->with('filename', $namefile);

只需将 $request get 更改为您想要的任何内容

【讨论】:

    【解决方案3】:

    使用$articles->lastPage()分页器方法。

    https://laravel.com/docs/5.6/pagination#paginator-instance-methods

    【讨论】:

    • 我不需要分页器的最后一页,我需要重定向后生成的 url,例如从下一页生成的 url 是 /articles?page=3,它重定向到 /blog/3,我应该以某种方式得到 /blog/3。
    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 2013-03-09
    • 2013-02-24
    • 2011-03-05
    • 2021-01-13
    • 2012-04-26
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多