I want to redirect all http://www.domain.com requests to domain.com with PHP, basically:
if (substr($_SERVER['SERVER_NAME'], 0, 4) === 'www.')
{
header('Location: http://' . substr($_SERVER['SERVER_NAME'], 4)); exit();
}
However I do want to maintain the requested URL like in SO, for e.g.:
http://www.stackoverflow.com/questions/tagged/php?foo=bar
Should redirect to:
http://stackoverflow.com/questions/tagged/php?foo=bar
I don’t want to rely on .htaccess solutions, and I’m unsure which $_SERVER vars I’d have to use to make this happen. Also, preserving the HTTPS protocol would be a plus.
How should I do this?
Would redirect the user to the exact same page, www. intact.
So, to get rid of the www. , we just replace one line:
And that should work.
By the way, this is the method that is recommended by Google, as it keeps
https://intact, along with ports and such if you do use them.As Gumbo pointed out, he uses
$_SERVER['HTTP_HOST']as it comes from the headers instead of the server, thus$_SERVER['SERVER_*']is not as reliable. You could replace some$_SERVER['SERVER_NAME']with$_SERVER['HTTP_HOST'], and it should work the same way.