Эти правила должны выполнять эту работу (хотя требуется некоторое РЕАЛЬНОЕ тестирование, поскольку я только что симулировал все URls):
RewriteEngine On
RewriteBase /
# add trailing slash in /blog if absent
RewriteRule ^blog$ http://domain.com/blog/ [NC,QSA,R=301,L]
# redirect to /blog/ on domain.com
RewriteCond %{HTTP_HOST} =domain.com
RewriteRule ^(?!blog/?)(.*)$ http://domain.com/blog/$1 [NC,QSA,R=301,L]
# redirect to /blog/ on www.domain.com
RewriteCond %{HTTP_HOST} =www.domain.com
RewriteRule ^(blog/)?(.*)$ http://domain.com/blog/$2 [NC,QSA,R=301,L]
Если какой-то URL НЕ перенаправляется, дайте мне знать (FULL URL), чтобы я мог посмотреть его.