Search code examples
linuxhttp-redirectcurlwget

Get final URL after curl is redirected


I need to get the final URL after a page redirect preferably with curl or wget.

For example http://google.com may redirect to http://www.google.com.

The contents are easy to get(ex. curl --max-redirs 10 http://google.com -L), but I'm only interested in the final url (in the former case http://www.google.com).

Is there any way of doing this by using only Linux built-in tools? (command line only)


Solution

  • curl's -w option and the sub variable url_effective is what you are looking for.

    Something like

    curl -Ls -o /dev/null -w %{url_effective} https://example.com
    

    More info

    -L         Follow redirects
    -s         Silent mode. Don't output anything
    -o FILE    Write output to <file> instead of stdout
    -w FORMAT  What to output after completion
    

    More

    You might want to add -I (that is an uppercase i) as well, which will make the command not download any "body", but it then also uses the HEAD method, which is not what the question included and risk changing what the server does. Sometimes servers don't respond well to HEAD even when they respond fine to GET.