301 Redirect from domain.com to www.domain.com
I needed to use 301 to redirect all non-www requests for a site to the www version and here's how I did it. I made two folders in the sites folder:
sites/www.domain.com/settings.php
sites/domain.com/settings.php
I then put the following in the non-www (domain.com) settings.php file. This is the entire contents of the file:
<?php
$host = $GLOBALS['HTTP_SERVER_VARS']['HTTP_HOST'];
$request = $GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI'];
header("HTTP/1.0 301 Moved Permanently");
header("Location: http://www.$host$request");
header("Connection: close");
?>I would rather do this with mod_rewrite, but it looks complex and I don't have time to study that right now. If anybody has a suggestion that would work in a multisite environment, that'd be really great.

use .htaccess
This is much simpler with .htaccess:
Redirect permanent / http://www.domain.exampleBut it does require having a separate docroot for www.domain.example and domain.example
- David Herron - http://7gen.com/
Using .htaccess
Even easier, as far as redirects go is to use mod_rewrite. This is the way Drupal suggests it:
<IfModule mod_rewrite.c>
RewriteEngine on
# If your site can be accessed both with and without the prefix www. you
# can use one of the following settings to force user to use only one option:
#
# If you want the site to be accessed WITH the www. only, adapt and
# uncomment the following:
# RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
# RewriteRule .* http://www.example.com/ [L,R=301]
#
# If you want the site to be accessed only WITHOUT the www. prefix, adapt
# and uncomment the following:
#RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
#RewriteRule .* http://example.com/ [L,R=301]
# Probably some other stuff
</IfModule>
Just uncomment one of the two sets of lines of RewriteCond/RewriteRule, depending if you want your site to always show as www.example.com or example.com.
Remember to replace example.com with your domain name.
You will lose the rest of
You will lose the rest of the URL if you run the rewrite rule mentioned above
The above URL rewrite will result in
http://example.com/somepath/otherpath redirected to http://www.example.com
Use
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule (.+) http://www.example.com/$1 [L,R=301]
to redirect with the rest of the URL intact.
This will correctly redirect
http://example.com/somepath/otherpath to http://www.example.com/somepath/otherpath
The difference is the .* pattern in the rewrite condition replaced with (.+) and the $1 at the end of the URL.
If instead you want to use the non-www url as your standard url apply the same concept in the second rewrite url also.
Cheers
Anoop
http://www.zyxware.com
=========================
Be the change you wish to see in the world
M. K. Gandhi
=========================
Redirect from old_domain.com to new_domain.com
If for some reason you have renamed your domain to a new one but still in same hosting and having multiple sites.
1. Create a subfolder: newdomain.com/
2. Bulk move your files to newdomain.com/ but preserve a copy of .htaccess in old place
3. Create an index.php in old place:
<?php$domain= 'http://newdomain.com';
$path = $_SERVER['REQUEST_URI'];
header('Status: 301 Moved Permanently');
header('Location: '. $domain . $path);
?>
As it is PHP, you can put lots of logic here, I mean, make complex redirects, split your current domain in several subdomains and redirect to better place by parsing the URL.
--
develCuy's fruits
(3 John 1:2) Dear friend, I pray that you may enjoy good health and that all may go well with you, even as your soul is getting along well.