Htaccess Subdomains to www
Search engines are making duplicate content an easy problem to solve. This article outlines the htaccess method I use to redirect my sub domains to www.
I like to forward all my domains to the www sub-domain, here are a few reasons why:
- Eliminate duplicate content in search engines
- Remove confusion in CMS Control panels and sessions
- Reduce confusion with DNS and CDNs
The code
This is the code I place in my htaccess file.
RewriteEngine On
RewriteBase /
# Redirect sub-domains to www
# v1.3
# Last Updated: Sept. 18, 2013
rewritecond %{HTTP_HOST} !^www\.nickyeoman\.com$ [NC]
rewriterule ^(.*)$ https://www.nickyeoman.com/$1 [R=301,L]
Please note the exclamation mark means not, the backslashes escape the periods, and the NC means case-insensitive. L means last rule (stop rewriting after this).
Logical And
I used do web development on my local machine and set a sub-domain (dev.mydomain.com) using the etc/hosts file.
The above code snippet completes a logical and until the rewriterule is reached. I now use tlds instead of subdomains so you can use simple pipes in your code like so:
rewritecond %{HTTP_HOST} !^www\.nickyeoman\.com$ [NC]
rewritecond %{HTTP_HOST} !^www\.nickyeoman\.(com|ca|tld)$ [NC]
Redirect www domain to non-www domain
Maybe you are a small company and don’t require the use of the www sub-domain.
If this is the case you can use htaccess to redirect a www domain to a non-www domain. This is also known as the TLD or Top Level Domain.
I prefer the above method of forwarding to the World Wide Web (www) sub domain.
The code
RewriteEngine On
RewriteBase /
# Redirect www to non-www
# v1.1
# Last Updated: Nov 13, 2012
# permanently redirect from www domain to non-www domain
RewriteCond %{HTTP_HOST} ^www\.nickyeoman\.com$ [NC]
RewriteRule ^(.*)$ https://nickyeoman.com/$1 [R=301,L]