А зачем куча страниц с одинаковым контентом?
Если хоть что-то разное то прокидывайте какой-то slug в url страницы и получайте его уже с помощью useParams().
А потом уже запросом с сервера данные получаете.
Вложенность роутов делается примерно так:
<Route path='/posts' element={<PostsPage />}>
<Route path='/posts/:id' element={<Post/>}/>
</Route>
Чтобы получить query параметры из url:
const { id } = useParams();