The Internet is full of resources and all these resources are uniquely identified by Uniform Resource Locators (URLs). Importance of the uniqueness of URLs can not be overstated and need not be explained. It is very simple to understand! Most web servers and browsers consider www and non www URLs as same. For example, theoretically:
http://www.example.com is same as
But some web servers and search engines (like Google) may consider these URLs to be different. Both of the URLs point to the same resource. So, we have two URLs to access one resource. Such a situation causes content duplication and content duplication is a cardinal sin in the eyes of search engines. They put a heavy penalty on websites hosting duplicate content.
Internet is a dynamic system. Here resources change and so do the URLs. Therefore, redirection is a common phenomenon on the Internet. Webmasters deploy a few methods to redirect www URL to non www URLs (or the other way round, i.e. redirect non-www URL to www URL). the easiest method to achieve this is to use .htaccess file wherein you can permanently redirect (301 redirect) one form of the URL to another form. Let’s learn how to carry out such redirection. But before that, let’s see what all you would need:
First of all, you would need to decide which format you prefer. You want to keep your website’s URLs in www format or non www format. Whichever you choose, stick to one format. Do not mix www and non www URL formats.
Make sure mod_rewrite module of Apache is available.
Modifying .htaccess will require you to have access on your server. If you’re writing a blog on a free platform (like WordPress.com), you would not be able to access or change .htaccess file. But in such a case you would not any way need to make such changes as the blogging platform does take care of such small issues.
Apache server uses modules for various functionalists. mod_rewrite is a module that enables redirection and URL rewriting. If this module is installed and available on Apache server, only then your redirection will work.
If mod_rewrite is available, it will take your redirection commands from .htaccess file.
If you have changed the domain name of your website, it is highly recommended that you redirect all the old website pages to the new address. To do this, add the following in .htaccess file:
Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www.olddomainname.com$ [OR] RewriteCond %{HTTP_HOST} ^olddomainname.com$ RewriteRule ^(.*)$ [R=301,L]
Add the following code in .htaccess file to permanently redirect all the www addresses to their non www counterparts:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.example.com [NC] RewriteRule ^(.*) [L,R=301]
Replace ‘example.com’ with your domain name. If you want a more general sort of solution, it was offered by Ben on StackOverflow:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
As you can see, you don’t need to change anything. Just paste the above code in .htaccess and all your www URLs will be permanently redirected to the corresponding non-www URLs.
The following code will redirect all the non-www addresses of a domain to their www counterparts:
RewriteEngine On RewriteCond %{HTTP_HOST} ^example.com [nocase] RewriteRule ^(.*) [last,redirect=301]
I am taking up this specific issue because many webmasters feel confused when the following happens:
redirects to
This situation arises on a server that hosts multiple domains. Mostly such servers are shared hosts or reseller type of hosting arrangements. Use the following code:
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?example\.com)$ [NC] RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]
As I have mentioned, you should try to avoid making changes in the URLs but sometimes it is necessary and unavoidable. In case you have to rename a folder, you should use the following code to redirect URLs with old folder to the new folder.
RewriteEngine on RewriteRule ^/?old([a-z/.]*)$ /new$1 [R=301,L]
Do not forget to change ‘old’ and ‘new’ with the old and new names of your folder.
I hope this information was useful for you. Make sure redirection is done properly. A badly configured .htaccess can break your server. It is an extremely important file. Correct URL redirection will benefit not only your website or blog users; but also it will have a good impact on your website’s search engine optimization (SEO).
Should you have any, please feel free to ask any questions. Thank you for using TechWelkin!
Redirected non-www to www for xml url from .htaccess file, its working for mozilla but didnt work for chrome
Great article! I found good and working solution to do 301 from www to non-www thank to you! Thank you.
Thanks for this info. I have been facing issues with redirection. This will surely help me out in solving redirection issues on my server.
Thanks a lot. with htaccess redirection is much faster. Thanks again
Hi sir i want to know which domain format is important? with www. or without it? can any one please let me know.
Both formats are equally ok. There is no practical difference.
Very valuable article.
Is it important to redirect from one to another or vice versa-means www to non www or from non www to with www url?
That’s a matter of personal liking.
You are the man. I really like your work and guidance to resolve such critical issue.
Thanks again.
Hello Lalit,
Thanks for detailed explaining things for www vs non-www and also providing htaccess code for the same.
Thanks for sharing nice peace of code built for 301 redirect using the .htaccess file, i was looking for the code.
You’re welcome Praveen! All the best for your endeavors.
Thanks Buddy !
Thanks Arsh, I am glad you were able to solve www redirect problem in your website. Stay connected with TechWelkin!
How to redirect this for asp.net based website.
In case of Windows hosting, most probably you’re using IIS Server (which runs ASP.net code). The HTACCESS does not work on IIS Server. Instead of htaccess, you should use web.config file.