Catch-all routes based on template structure
What we often do for a section (lets call it Pages) is actually not use any custom routing, and control things in the templates.

Start by setting the section template to pages/index. In your index.html file, we usually have the following:

{# Look for a template for this entry type (if any), then look for a template matching #}
{# the entry's slug, and fallback to the default '_entry' template #}

{% include [
    'pages/' ~ entry.type,
    'pages/' ~ entry.slug,
    'pages/_entry'
] %}


Using Twig's array-style include means it'll look for templates, and if one doesn't exist, move onto the next. In this scenario, we can simply create a file for an entry type, or even for a specific slug, with a fallback to a default.

Your case might be different of course, but might be a step in the right direction.