Force the use of the www subdomain

Sometimes it is useful to redirect all requests to the www subdomain, because some search engines may spider find duplicate content because it indexes your domain with and without the www subdomain. So this script helps you forcing the use of the www subdomain.

// Install info.:
// Copy and paste these lines into your default index.php or
// the file that get's called if a visitor comes on your 
// website...
// read the host from the server environment
$host = $_SERVER["HTTP_HOST"];
// fix host name - we never now... ;-)
$host = strtolower($host);
$host = trim($host);
// This is important: 
// Webbrowsers like Firefox are doing their request without
// the port number like "" but some other 
// applications send host names like "" 
$host = str_replace(':80', '', $host);
$host = trim($host);
// if the host is not starting with www. redirect the 
// user to the same URL but with www :-)
if ($host != ''){
    // You an also change the "!=" to "==", if you want to force 
    // the user to use the domain name without the www. 
    // send status header, so that search engines or other services
    // detect that this is a permanent redirect and not a temporary
    header('HTTP/1.1 301 Moved Permanently');
    // read the URL the user requested:
    $url = isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : '';
    // redirect the user to the new destination:
    header('Location:' . $url);
    // Convert "special" chars -- cause we never now... ;-)
    $url = htmlspecialchars($url);
    // "fallback" link, if the browser is not supporting header redirects
    print '<a href="' . $url.'">Please click here</a>';
    // stop the script execution here
// If the domain is then go on with your PHP code 
// of with your website...
// BTW: You need to replace trough your own domain :-D
Snippet Details

Try it by using and

Sorry folks, comments have been deactivated for now due to the large amount of spam.

Please try to post your questions or problems on a related programming board, a suitable mailing list, a programming chat-room,
or use a QA website like stackoverflow because I'm usually too busy to answer any mails related
to my code snippets. Therefore please just mail me if you found a serious bug... Thank you!

Older comments:

Karl Groves February 07, 2008 at 16:35
.htaccess is easier

RewriteCond %{HTTP_HOST} ^$
RewriteRule ^(.*)$1 [R=301,L]
yay November 14, 2007 at 01:23
thanks so much! worked perfect