The method you've described is rather patchy, unfortunately.
You should either:
- Change the URL in the site settings, and then physically move all the Wordpress files to root
- Just rewrite the requests to the blog directory with mod_rewrite (no moving necessary)
Then you can redirect any request for /blog without blocking access to the admin pages (or potentially breaking anything else).
If you don't want to move anything else now, use mod_rewrite for your redirects and add exceptions for admin pages, e.g. something like this:
RewriteCond %{REQUEST_URI} !wp-admin
RewriteRule ^blog/(.*) /$1 [R=301,L]
If you put back your old files, to rewrite requests for root the blog, use something like this (code is from [
codex.wordpress.org...]
RewriteCond %{REQUEST_URI} !^blog
RewriteRule ^(.*)$ /blog/$1 [L]
You keep everything in the /blog directory, but users browse from the root.
Your redirects will send everything to the root, incidentally, so blog/post will go to the homepage - this will lose link value and Google will complain about soft 404s. Mod_rewrite redirects (as per first example above) are the way to fix this (RewriteRule ^blog/(.*) /$1 [R=301,L]).