37

When I type in my domain name like without the www (like http://example.com), it doesn't work and gives error message. However, when I add the www to it (like http://www.example.com), it works.

Isn't it supposed to work both ways (with and without the www)?

Digital site
  • 4,431
  • 12
  • 48
  • 72

6 Answers6

24

All you need is to add the following code to your root .htaccess file:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Community
  • 1
  • 1
Digital site
  • 4,431
  • 12
  • 48
  • 72
  • 9
    It would be nice if you explained to people what this actually does. Here's a blog using the same code http://dense13.com/blog/2008/02/27/redirecting-non-www-to-www-with-htaccess/ – trainoasis Jul 16 '14 at 07:29
  • Thanks@trainoasis for the link. It should be self explanatory. it adds www to the domain and any subdomain or subfolders and so on... – Digital site Jul 16 '14 at 15:06
  • 4
    You need to understand regular expressions to decipher the code. The second line means: if the HTTP_HOST does not (!) start with (^) "www.", then put it in memory for the next line. The next line says: from what was captured in the previous line, match everything (.*) from beginning (^) to end ($) and save everything (inside the parenthesis) as $1. Then replace $1 with "http://www." plus the HTTP_HOST variable. – Damian Green Mar 12 '15 at 18:01
  • 1
    where to add these code tho? does it have to do with backend language? – MartianMartian Aug 10 '15 at 01:05
  • you can add them to your .htaccess file in your main web server tree. – Digital site Aug 12 '15 at 23:34
  • 1
    I tried using this code but it does not work for me. I get forbidden error when i try to access my website without www. – node_saini Apr 13 '17 at 08:09
8

With the current version of apache, you need to do the following, which has changed compared to the previous versions:

cd /etc/apache2/sites-enabled

Now find the config file for your domain and edit it (the first three lines after <VirtualHost *:80> is what we need here):

<VirtualHost *:80>
        ServerName www.yourdomain.com
        ServerAlias yourdomain.com *.yourdomain.com
        ServerAdmin webmaster@localhost

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

</VirtualHost>

And now after saving changes to the file, you should reload Apache we server configuration with:

service apache2 reload

and it'll work!

P.S. You may also want not to add *.yourdomain.com to the end of your ServerAlias line.

Neeku
  • 3,646
  • 8
  • 33
  • 43
  • `ServerAlias www.yourdomain.com yourdomain.com` works. Thanks. – node_saini Apr 13 '17 at 08:14
  • @node_saini please upvote the answer if it helped you. :-) – Neeku Apr 14 '17 at 09:44
  • Done :) But is this the right way to do it? It would not cause any problem right? – node_saini Apr 17 '17 at 07:44
  • @node_saini yep! You upvote the questions and answers that you find helpful. So should do anyone else. :-) – Neeku Apr 17 '17 at 20:18
  • It helped me no doubt but there is a right way and a wrong way to solve a problem and wrong way doesn't mean it won't work, it will work but it's not the right way. This was my only concern :) – node_saini Apr 18 '17 at 08:23
  • @node_saini oh right, I get you now. I hadn't understood your question. I don't think there's anything wrong with this, it's been a while since I'd figured it out and applied it to my server and it's been working fine. – Neeku Apr 18 '17 at 17:01
4

to solve this issue

  • suppose you want mysubdomain.domain1.com

  • goto your dns records settings in your web panel ( cpanel , vestapanel etc ) of domain1.com

  • add there new A record with ip of your domain1.com and fill record/hostname field with @ // @ mean no www if you want www too then add another new A record and replace @ with www

  • save it

  • wait for dns changes to take place maybe take few hours

user889030
  • 4,353
  • 3
  • 48
  • 51
0

Alternatively, you could follow below steps which solves this problem, for sure, if you're using GoDaddy and google apps :

  1. Go to Google Apps and sign in to domain management.

  2. Then click on domain settings.

  3. Then click on domain Names.

  4. Then Click on words highlighted to set a redirect via google apps and you should see it done within 3 hours or MAX 2 DAYS (though it usually does not take more than a day in the rarest case).Just follow the simple english instructions there and you should see it done.

More details and reference :

http://www.techproceed.com/2014/05/custom-domain-setup-on-blogger-with.html

Snehal Masne
  • 3,403
  • 3
  • 31
  • 51
-2

You need to change any full urls to paths. If your php include or other processes are linked using urls, it will only work one way.

$.ajax(
{       
    url:'/LAYOUT/process.php'
}

as oppose to the full url

$.ajax(
{       
    url:'https://www.yourdomain.com/LAYOUT/process.php'
}

Using a simple path will allow it to work both ways with or without www.

Maciek Semik
  • 1,872
  • 23
  • 43
-2

1st go your domain provider website. 2nd go dns record. 3rd add A record IP go this link

and copy 4A records and add dns.

BM Yadav
  • 31
  • 2