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?

link|improve this question

feedback

closed as exact duplicate by Chris S Feb 17 at 16:23

This question covers exactly the same ground as earlier questions on this topic; its answers may be merged with another identical question. See the FAQ for guidance on how to improve it.

1 Answer

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.".

link|improve this answer
Unfortunately both those changes still try to add www. to any url – psynnott Apr 1 '10 at 8:29
feedback

Not the answer you're looking for? Browse other questions tagged or ask your own question.