Set up HTTP 301 redirects from your old blog URLs to the corresponding URLs on the new site. As soon as Google reindexes your site, they'll see that it has moved and update their index. In the mean time, the 301 redirects will also send any visitors going to your old site to the new location.
For example, to set up a 301 redirect from www.example.com/blog
to blog.example.com
using Apache mod_alias, you should add the following line to your Apache config (or in an .htaccess
file) for www.example.com
:
Redirect 301 /blog http://blog.example.com
Or you can do the same with mod_rewrite:
RewriteRule ^/?blog(/.*)?$ http://blog.example.com$1 [NS,L,R=301]
If your old blog URLs are so hopelessly mixed with the URLs of your new content on www.example.com
that you can't come up with a reasonable number of regexps to match them, one possible solution is to handle the redirection in your 404 error handler. For some examples, see e.g. this article.