Можно сделать 2 разных "разметки", так сказать. В одной у вас есть сайдбар, в другой нет.
2 разные разметки = 2 разных компонента (роут-с-сайдбаром, роут-без-сайдбара).
Оборачиваете дочерние роуты в роут-с-сайдбаром, или в роут-без-сайдбара и там рисуете нужный шаблон +
this.props.children
. Вложенность роутов друг в друга - любая, можно таким образом еще усложнить логику отрисовки шаблона.
p.s. 4ю версию роута еще не смотрел. Но таким решением пользуюсь с 3й версией, думаю в 4м так же, либо еще удобнее придумали.
p.p.s. тема с фильтрацией, которую посоветовал
Aves тоже подходит.
(пример, используется getComponent - это для динамической подгрузки)
<Route path='/reports' component={AuthenticatedContainer} onEnter={_ensureAuthenticated}>
<Route getComponent={() => def(import('../containers/WiwthSidebar'))}>
<Route path='/reports/a' getComponent={() => def(import('../containers/A'))} />
<Route path='/reports/b' getComponent={() => def(import('../containers/B'))} />
</Route>
<Route getComponent={() => def(import('../containers/WithoutSideber'))}>
<Route path='/reports/c' getComponent={() => def(import('../containers/C'))} />
</Route>
</Route>