0

Possible Duplicate:
Everything You Ever Wanted to Know about Mod_Rewrite Rules but Were Afraid to Ask?

The below code adds www. to any url that does not start with it:

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://www.%2%{REQUEST_URI} [L,R=301]

However, I want it to do this only when the url is of the format:

something.com

If the url is like:

something.something.com

I do not want the rule adding www.

How do I change this?

psx
  • 235
  • 3
  • 13

1 Answers1

1

Change

RewriteCond %{HTTP_HOST} !^www\.

To:

RewriteCond %{HTTP_HOST} !(^www\.|\..+\.)

In other words, change your conditional from looking for "www" to looking for www or looking for two dots.

Though, given the problem description, this would probably work, too, and has the advantage of being simpler:

RewriteCond %{HTTP_HOST} !\..*\.

The problem could probably be described better as "rewrite any host with only one dot to prepend "www.".

freiheit
  • 14,334
  • 1
  • 46
  • 69