【问题标题】:Why is return redirect giving 404 in Laravel 8为什么返回重定向在 Laravel 8 中给出 404
【发布时间】:2021-09-22 05:30:22
【问题描述】:

我想通过将视频重定向到我的网站来显示该视频。但是当我尝试使用返回重定向时,我得到一个 404 错误。如果我尝试回显而不是返回,它首先输出 URL,然后显示视频。我的问题是为什么当我使用返回时它会给出 404。如何使用返回来完成此操作?

问题不仅在于视频,当我想显示来自谷歌的地图时,我也面临同样的问题。为什么使用返回重定向时会出现 404?

web.php(路由)

Route::middleware([Localization::class])->group(function () {
  $lang = RouteLocalization::lang();
  $csrf = Config::get('custom.csrf');
  Route::get('/', 'Welcome@setWelcome');
    
  Route::group(['middleware' => ['isLogin']], function () use ($lang) {
    Route::prefix($lang)->group(function () {
      .
      .
      .
      Route::get(__('route.interactivity_preview'), 'Interactivity@get_preview')->name('interactivity_preview');
      .
      .
      .
    }
  }
}

交互控制器

public function get_preview() {
    .
    .
    .
    if (!(strpos($url, 'www.youtube.com/watch') === false)) {
        $parts = parse_url($url);
        parse_str($parts['query'], $query);
        $data['url'] = 'https://www.youtube.com/embed/' . $query['v'];
        return redirect()->away($data['url']);
    }
    .
    .
    .
}

当我尝试回显而不是返回时,视频会在输出之后显示。

echo redirect()->away($data['url']);

回声输出示例

HTTP/1.0 302 找到缓存控制:无缓存,私有日期:2021 年 7 月 13 日星期二 07:08:46 GMT 位置:https://www.youtube.com/embed/yk-lHYTVJo0 重定向到https://www.youtube.com/embed/yk-lHYTVJo0。重定向到https://www.youtube.com/embed/yk-lHYTVJo0

如何使用return解决问题,或者如何在使用echo时让视频直接进入而不输出?

【问题讨论】:

  • 你是如何使用这条路线的?
  • Route::get(__('route.interactivity_preview'), 'Interactivity@get_preview')->name('interactivity_preview');
  • 这是声明,看起来也很奇怪。我更多的是问你是如何使用这条路线的,例如您是否希望用户直接访问路由解析到的 URL?
  • 用户未访问该网址。添加的视频显示在网站上。也就是说,视频显示在当前位置,无需离开网站。
  • 你的意思是在 iframe 或类似的东西中?

标签: php laravel redirect


【解决方案1】:

尝试使用重定向到:

return redirect()->to($data['url']);

也可以直接使用:

return redirect($data['url']);

如果上述方法不适合你,也可以试试:

use Illuminate\Support\Facades\Redirect;

return Redirect::to($data['url']);

【讨论】:

  • 对不起。不工作。它再次给出 404 错误
  • 请访问此链接您可能会在这里找到答案:stackoverflow.com/questions/29158074/…
  • 404 错误表示未找到页面。请确保您的网址正确。并检查 url 的会话。
  • 网址是正确的,但是当我尝试使用 echo 时,会显示视频。为什么不返回?
  • 可能是视频加载导致了这个问题,但我不确定。
【解决方案2】:

你可以使用:

return redirect($data['url']);

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 2021-09-03
    • 2019-06-24
    • 2021-07-13
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    相关资源
    最近更新 更多