卷曲在中间件

时间:2018-09-11 12:42:11

标签: php laravel-5.4 laravel-middleware

我正在编写一个PHP Laravel中间件,在其中我想使用404s垂直重定向URL,例如,我有一个URL

  

aa / bb / cc

我想先检查网址是否健康,如果该网址为404,请向上移动

  

aa / bb

如果还给我404,请进一步移动到根

  

aa

我可以使用此curl功能检查404

public function checkUrl($url)
{
    $handle = curl_init($url);
    curl_setopt($handle, CURLOPT_NOBODY, true);
    //  curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
    /* Get the HTML or whatever is linked in $url. */
    $response = curl_exec($handle);

    /* Check for 404 (file not found). */
    $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    curl_close($handle);
    if($httpcode == "404")
        return FALSE;
    else
        return TRUE;
}

但是我担心的是curl命令每次迭代都会花费时间,因此应该使用的最佳方法是什么。这是我当前的实现方式

public function handle($request, Closure $next, $guard = null)
{
 if($request->route()->uri() == "{aa}/{bb}/{cc}"){             
        $checkurl = TRUE;
        $checkurl = checkUrl("{aa}/{bb}/{cc}");
        if($checkurl == FALSE)
           {
               $checkurl = checkUrl("{aa}/{bb}");
               if($checkurl == FALSE)
               {
                    return redirect("{aa}",301);
               }
               else
               {
                    return redirect("{aa}/{bb}",301);
               }

           }
 return $next($request);
}

0 个答案:

没有答案