Tenha muito cuidado com os redirecionamentos 301 porque, por padrão, um navegador que recebe o redirecionamento 301 irá armazená-lo permanentemente - ou seja, você desistirá do controle que esse navegador verá quando tentar acessar o domínio www.example.com
.
Veja por exemplo esta discussão link
Então, certifique-se de que ele não seja armazenado em cache ou use o mod_proxy (eu recomendo o mod_proxy).
Se você está bem em deixar o usuário ver a mudança de URL na barra de endereços do navegador, use mod_rewrite:
<VirtualHost *>
ServerName www.example.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule ^/(.*)$ http://example.com/$1 [L,R=301,E=nocache:1]
## Set the response header if the "nocache" environment variable is set
## in the RewriteRule above.
Header always set Cache-Control "no-store, no-cache, must-revalidate" env=nocache
## Set Expires too ...
Header always set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=nocache
</VirtualHost>
Se você quiser que o "redirecionamento" seja invisível para o usuário, use mod_proxy:
<VirtualHost *>
ServerName www.example.com
ProxyRequests Off
<Proxy *>
Order Deny,Allow
Deny from all
Allow from 203.0.113.67
</Proxy>
ProxyPass / http://example.com/
ProxyPassReverse / http://example.com/
</VirtualHost>
Deve-se notar que o mod_proxy, quando mal configurado, pode prejudicar sua rede.