I’m doing a 301 redirect on site A to site B – when the user arrives at site B it needs to find the page the user came from. This doesn’t seem to be working though:
$_SERVER['HTTP_REFERER']
whereas if I do a link to the page
<a href="http://site-b.com">go</a>
I get the referrer through. Is there a reason it doesn’t come through after the redirect? If so can anyone offer any advice on how to do this. I want to avoid at all costs having a query string on the redirect.
Is there maybe another header I need to send with the page that redirects?
Thanks for any advice!
The thing is, the
HTTP_REFERERis site A. That’s just how a 301 works.That said, the easy way to do this is to take the url of the referrer to site A onto the end of site B’s URL as a variable. Then, at site B, any time you have a referral from site A, you can have it.
Then of course at site B, access
urldecode($_GET['ref'])for your referrer.However… if you’re looking to avoid
_GETvariables, you have a few options.A) Collect the
_GETrequest, then re-munge the URL — IE have site B redirect to a “clean” version of itself.B) Have your redirecting page make a
curlorstream_get_contentsover to a “collection” page prior to issuing aheader(), where you collect and store the any session information (like the refererer) and have it prepared to be processesed when they redirect.