How to redirect requests from root to subfolder (if they exist)?
There's a plugin to set up custom routes: Reroute by Trevor Davis, but this would require you to set them all up manually. If there's lots and lots of blog entries, you would probably want to avoid this.

As you said your slugs do match, you could just set up an ElementCriteriaModel with the slug parameter set to the relevant URI segment and see if there's an entry for that; and if that's the case redirect to that entry.

You would do this with this simple PHP code form a custom plugin. Set up a plugin and place the snippet in the init() method of your primary plugin class:

if (craft()-&gt;request-&gt;isSiteRequest())
{
    $inRoot = ((craft()-&gt;request-&gt;getSegment(2) === null) &amp;&amp; (craft()-&gt;request-&gt;getSegment(1) !== null));

    if ($inRoot)
    {
        $criteria = craft()-&gt;elements-&gt;getCriteria(ElementType::Entry);
        $criteria-&gt;section = 'blog';
        $criteria-&gt;slug = craft()-&gt;request-&gt;getSegment(1);
        $entry = $criteria-&gt;first();

        if ($entry)
        {
            craft()-&gt;request-&gt;redirect($entry-&gt;url, true, 301);
        }
    }
}