It seems to me that the conditions for the first domain say that
any hostname which is not www.doamin1.com should go to www.domain1.com.
I.e. Apache is doing exacly as asked (domain2.com != www.domain1.com) :)
I guess you want requests to http://domain2.com to go to the second
virtual host and www added at the front? IIRC Apache looks for the
virtual host files in /etc/Apache2/sites-enabled/ directory in the order
their appear. That's why I use the 001-site1, 002-site2 etc to make them
appear alphabetically in the right order.
But back to your question. You need a condition to tell domain1 that it
only takes requests for domain1, i.e.,
VirtualHost for site www.domain1.com
...
RewriteCond %{HTTP_HOST} ^.*domain1\.com [NC]
RewriteCond %{HTTP_HOST} !^www\.domain1\.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.domain1.com/$1 [L,R]
or something like that, and same for other hosts as well. It's late so
double-check the syntax :)
And don't forget http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
Hope this helps...
Simo