How to find where the URL will redirected using cURL?

In General, cURL stands for ‘Client for URLs’, here URL written in uppercase to indicates that the cURL deals with URLs.

PHP Approach:
Basic Function used in cURL:

  • curl_init() Function: It will initiate the curl a new session and return a cURL handle.
    Syntax:



    curl_init();
  • curl_setopt() Function: It sets an option for a cURL session identified by the ch parameter. Option specifies which option is to set, and value specifies the value for the given option.
    Syntax:

    curl_setopt($ch, option, value);
    

Parameter with the other important commands:

  • curl_setopt($ch, CURLOPT_URL, $url) It pass URL as a parameter, this return target url that you want to get from the internet.
  • curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE) It is set to TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it directly.
  • curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE) It is set to TRUE to follow any “Location: ” header that the server sends as part of the HTTP header.
  • curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) It passed to get cURL info of effective URL.
  • curl_exec($ch) It grab URL and pass it to the variable for showing output.
  • curl_close($ch) It close curl resource, and free up system resources.

Program:

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
  
// From URL to get redirected URL
  
// Initialize a CURL session.
$ch = curl_init();
  
// Grab URL and pass it to the variable.
curl_setopt($ch, CURLOPT_URL, $url);
  
// Catch output (do NOT print!)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  
// Return follow location true
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$html = curl_exec($ch);
  
// Getinfo or redirected URL from effective URL
$redirectedUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
  
// Close handle
curl_close($ch);
echo "Original URL:   " . $url . "<br/>";
echo "Redirected URL: " . $redirectedUrl . "<br/>";
  
?> 

chevron_right


Output:

Original URL: https://geeksforgeeks.org/
Redirected URL: https://www.geeksforgeeks.org/

Command-Line Approach:

  1. Get Redirect URL with cURL:
    Syntax:

    curl -Ls -w %{url_effective} -o /dev/null [URL]
    

    Description:

    • curl — command name
    • -s — Silent mode
    • -L — Location which Follow redirects
    • -D – — Dump headers here
    • [URL] — URL that performs redirection
    • -o /dev/null — remove extra stdout info
    • -w ‘%{url_effective}’ — final destination

    Example 1:

    curl -Ls -w %{url_effective} -o /dev/null 
    https://www.geeksforgeeks.org/php-cucrl/
    

    Output:

  2. Follow the redirects with cURL:

    syntax:

    curl -s -L -D - [URL] -o /dev/null -w '%{url_effective}'
    

    Example 2: Following redirect to 404 Error page.

    curl -s -L -D - 
    https://www.geeksforgeeks.org/php-cucrl/ -o /dev/null -w 
    '%{url_effective}'
    

    Output:

    D:\mycurl\bin>curl -s -L -D - https://www.geeksforgeeks.org/php-cucrl/ 
    -o /dev/null -w '%{url_effective}'
    HTTP/2 404
    server: Apache
    strict-transport-security: max-age=3600; includeSubDomains
    link: ; rel="https://api.w.org/"
    access-control-allow-credentials: true
    x-frame-options: DENY
    x-content-type-options: nosniff
    content-type: text/html; charset=UTF-8
    cache-control: must-revalidate, max-age=3, s-maxage=21600
    date: Mon, 08 Jul 2019 01:34:28 GMT
    
    'https://www.geeksforgeeks.org/php-cucrl/'
    
  3. Followed redirect to correct page:
    Example 3:

    curl -s -L -D - 
    https://www.geeksforgeeks.org/php-curl/ -o /dev/null -w 
    '%{url_effective}'
    

    Output:

    D:\mycurl\bin>curl -s -L -D - https://www.geeksforgeeks.org/php-curl/ 
    -o /dev/null -w '%{url_effective}'
    HTTP/2 200
    server: Apache
    strict-transport-security: max-age=3600; includeSubDomains
    access-control-allow-credentials: true
    x-frame-options: DENY
    x-content-type-options: nosniff
    content-type: text/html; charset=UTF-8
    cache-control: must-revalidate, max-age=3, s-maxage=21600
    date: Mon, 08 Jul 2019 01:34:55 GMT
    
    'https://www.geeksforgeeks.org/php-curl/'
    


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.