Follow URL Redirect Checker

".$error['message']." "; } ?>
path) > 0) { $steps = count($request->path) - 1; $count = ($steps == 1) ? 'once' : $steps.' times'; echo "

Final destination

Your URL returned a ".$request->code." status code and redirected ".$count.":

getFinalRedirect()."\" target=\"blank\"> ".$request->getFinalRedirect()."

Redirect trace

"; foreach ($request->path as $step) { $item = $step['step']; $url = $step['url']; $code = $step['code']; $headers = $step['headers']; $next = ($step['next']) ? '↩︎' : ((isset($error)) ? 'x' : '✓'); echo " "; } echo "
Step Request Code
  ".$item."
".$url." ↗︎
"; if (is_array($headers) && count($headers) > 0) { echo "
"; foreach ($headers as $hkey => $hval) { echo "
".$hkey."".$hval[0]."
"; } echo "
"; } echo "
".$code." ".$next."
User agent: ".$request::USER_AGENT."
"; } else { echo "

Trace a URL's redirects

Enter a URL in the search box above to derive the final resolved URL after all redirects. The script runs recursive curl requests until we get a 200 status code. This is helpful to get around link tracking or original URLs that Pi-hole outright blocks (like email links).

I used to use wheregoes.com which is a good, reliable service, but decided to roll my own for privacy reasons. Absolutely nothing is logged as all URL searches are via POST and that's not currently included in my nginx logs.

Technical details

User agent

Other curl settings

"; } ?>