views:

59

answers:

3

When user is visiting by www.domain.name, redirect to domain.name.

+2  A: 
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domain\.name$ [NC]
RewriteRule (.*) http://domain.name/$1 [R=301,QSA,L]
jspcal
That requires mod_rewrite. Just using Redirect (or RedirectMatch) can be done using only the more commonly enabled mod_alias.
Ry4an
no you can't use Redirect for that
jspcal
A: 

In Apache you add a Redirect line to your configuration files. In php you reply with a status code 301 and a Location: header.

However, a redirect requires an additional network round trip. Are you sure you don't want to just use a ServerAlias line so that the same content is served up whether they visit with or without the www.?

Ry4an
+1  A: 

Put this in an .htaccess file in your root directory of your website:

RewriteEngine On
RewriteCond %{HTTP_HOST} . 
RewriteCond %{HTTP_HOST} !^domain\.name 
RewriteRule (.*) http://domain.name/$1 [R=301,L,QSA]

This is what they do, in order:

  1. Turn the rewrite engine on
  2. Make sure that HTTP_HOST was provided
  3. If it doesn't start with the name without the www or any other sub domain, then allow the rewrite to continue. This prevents an endless redirect back to itself.
  4. Grab everything after the URL (.*), including the querystring QSA, and redirect R=301 to the correct domain. The L just says this is the last command in the file if a match is found.
Doug Neiner
Is `%{HTTP_HOST} . ` useless?
No, I believe it allows you to access the site via IP address without being redirected.
Doug Neiner
this is a great description!
jspcal
I just tested that when you visit via IP,HTTP_HOST will be IP.So `%{HTTP_HOST} .` is indeed useless.