Я пишу промежуточное программное обеспечение 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);
}