Geralmente, a melhor prática, para facilitar a manutenção, seria algo assim:
[A] mydomain.com 123.45.67.89
[CNAME] www.mydomain.com mydomain.com
[CNAME] blog.mydomain.com mydomain.com
[CNAME] www.blog.mydomain.com mydomain.com
[A] mail.mydomain.com 123.45.67.89
[MX] mydomain.com mail.mydomain.com
Isso permite que você altere seu registro A para meudominio.com sem interromper seu registro de e-mail ou precisar alterar cada subdomínio manualmente.
Você também precisará configurar seu servidor da Web para responder sobre esses nomes. Aqui está um exemplo de como fazer isso no Apache:
NameVirtualHost 123.45.67.89:80
<VirtualHost 123.45.67.89:80>
DocumentRoot /var/www/html/mydomain.com
ServerName mydomain.com
ServerAlias www.mydomain.com
ErrorLog logs/mydomain.com-error_log
CustomLog logs/mydomain.com-access_log combined
</VirtualHost>
<VirtualHost 123.45.67.89:80>
DocumentRoot /var/www/html/blog.mydomain.com
ServerName blog.mydomain.com
ServerAlias www.blog.mydomain.com
ErrorLog logs/blog.mydomain.com-error_log
CustomLog logs/blog.mydomain.com-access_log common
</VirtualHost>
Para os redirecionamentos mencionados:
Question is, is this a common practice? Or are there better ways to do this? What I want to achieve is (user access -> redirect to):
mydomain.com -> mydomain.com www.mydomain.com -> mydomain.com blog.mydomain.com -> blog.mydomain.com www.blog.mydomain.com -> blog.mydomain.com other.mydomain.com -> error
Para realmente alterar o URL que é exibido na barra de endereços de um cliente, isso precisa ser feito no lado do servidor com o mod_rewrite e não é uma função do DNS.