Redirect your website's domain to www using .htaccess file

PDF Print E-mail
Share
Wednesday, 22 July 2009 21:19
One of the things that every website needs, is to have all it's urls redirected to the www subdomain. For example if your domain is yourdomain.com it should be redirected to  www.yourdomain.com. If you haven't done it yet and your Joomla website runs on Apache this tutorial is just for you.

First of all, why would we even need to have such redirection? The thing is that unless you don't have it, your website is practically duplicated - it exist in 2 copies which look exactly the same but yet are completely separate; one copy starts with www and the other without. This replication will result in many ways: starting with messed statistics of your website (each page will be treated as two) and finishing with the way search engines look at your website.

SEO aspect deserves special attention. Search engines will scan booth websites (assuming that there are inbound links to both of them) but will treat them as separate. Therefore all the credits your site will have will be divided between the two copies, eventually weakening it's SEO position.

So, now after we know why we need it, lets see how it gets done.

The idea is to create a url rewrite rule using htaccess file. htaccess file tells to Apache how to access the content of the folder it's located in. This file ships as part of Joomla installation, but if you haven't used it yet you'll have to activate it first. I'm not going to explain in details how it's done, there are other tutorials for that. Let's just say that it's activated by renaming the file name from "htaccess.txt" to ".htaccess" and telling to Joomla to use it in the configuration section.

After the htaccess file is ready to use, you should edit it and add this code:

########## Begin - www redirect Section
Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC] 
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
########## End - www redirect Section

Of course "yourdomain.com" should be replaced with your domain name. In case your Joomla website is using SEF plugin, such as Joomla! SEF or sh404sef, your htaccess file should already contain the "RewriteEngine on"  directive. In this case your code may look like this:

########## Begin - www redirect Section
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC] 
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
########## End - www redirect Section


This is how your htaccess file shoould look, assuming SEF plugin is used:

##
# @version $Id: htaccess.txt 10492 2008-07-02 06:38:28Z ircmaxell $
# @package Joomla
# @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! is Free Software
##

#####################################################
#  READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations.  It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file.  If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's.  If they work,
# it has been set by your server administrator and you do not need it set here.
#
#####################################################

##  Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

#
#  mod_rewrite in use

RewriteEngine On

########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits

#  Uncomment following line if your webserver's URL
#  is not directly related to physical file paths.
#  Update Your Joomla! Directory (just / for root)

# RewriteBase /

########## Begin - www redirect Section
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC] 
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
########## End - www redirect Section

########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## End - Joomla! core SEF Section

 

 



 

Add comment


Security code
Refresh