скручиваемость в Middleware - PullRequest
       9

скручиваемость в Middleware

0 голосов
/ 11 сентября 2018

Я пишу промежуточное программное обеспечение PHP Laravel, где я хочу перенаправить URL-адреса по вертикали с 404, например, скажем, у меня есть URL

aa / bb / cc

Iхотел бы сначала проверить, работает ли URL, и если это дает мне 404, двигайтесь вверх

aa / bb

, и если это также дает мне 404, двигайтесьдальше до корня

aa

.

Я могу проверить 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...