NOTE: Using <VirtualHost>
parameter only.
How do I redirect a directory (say example.com/groups/
) to a sub-domain (say groups.example.com
), and also the www of that sub-domain (www.groups.example.com
) to the non-www URL of that sub-domain (groups.example.com
)?
Precisely (⇒ stands for 'should 301 redirect to'):
example.com/groups/
⇒ groups.example.com
www.groups.example.com
⇒ groups.example.com
I have read that using <VirtualHost>
is better than all those redirection rules that are usually used (i.e. that using redirection engine is pretty heavy on disk i/o). So, I would like to have the above problem solved using <VirtualHost>
in .htaccess / httpd.conf if possible. Thanks!
Something like this should work
<VirtualHost *:80>
ServerName example.com
ServerAlias groups.example.com www.groups.example.com
RewriteEngine on
# example.com/groups/ -> groups.example.com
RewriteCond %{SERVER_NAME} ^example\.com$
RewriteRule ^/(\w+)/?$ http://$1.example.com [R=301,L]
# www.groups.example.com -> groups.example.com
RewriteCond %{SERVER_NAME} ^www\.(\w+)\.example\.com$
RewriteRule ^/(.*)$ http://%1.example.com/$1 [R=301,L]
</VirtualHost>
or specifically for groups
<VirtualHost *:80>
ServerName example.com
ServerAlias groups.example.com www.groups.example.com
RewriteEngine on
# example.com/groups/ -> groups.example.com
RewriteCond %{SERVER_NAME} ^example\.com$
RewriteRule ^/groups/?$ http://groups.example.com [R=301,L]
# www.groups.example.com -> groups.example.com
RewriteCond %{SERVER_NAME} ^www\.groups\.example\.com$
RewriteRule ^/(.*)$ http://groups.example.com/$1 [R=301,L]
</VirtualHost>