Howto setup a 301 redirect

A few links to setup 301 Permanent Redirect (302 follows the same logic but is for Temporary Redirect) in Apache:

One thing worth attention is the SEO-friendly redirection of non-www traffic to www. This means that if you load, say,, you will be redirected to This avoids having two different sites registered in search engines, and allows for everybody to use the same unique URL to really use your service.

This is done through a series of little things. First off, you need to install and enable mod_rewrite. On a Debian/Ubuntu system, this would be done by

sudo a2enmod rewrite

Then you need to define both URLs in your virtual host. Something like this:



Then you need to make sure rewrite is enabled for this vhost, and define the rule to rewrite the url (taken from an example on canonical hostnames in the Apache documentation):

RewriteEngine On
RewriteCond %{HTTP_HOST} !^ [NC]
RewriteRule ^/(.*)$1 [L,R]

This should be the right syntax to do it. The rest of your virtual host config can keep working as usual.

Related Posts

SSL certificates for multiple virtual hosts: problem on IE for Windows XP

Using a single server for multiple virtual hosts is something that comes naturally...

HOWTO Authenticate access to parts of webserver using PAM and Apache

This article is incomplete and was first written in June 2006 for the...

Quick Contact Form