diff --git a/packages/app-shell/src/app-shell.js b/packages/app-shell/src/app-shell.js
index 0c7d2a8805f13dafeeabff56f604b1d3a618fcb9..4af6848632c311f244e781d0600014e605acdebc 100644
--- a/packages/app-shell/src/app-shell.js
+++ b/packages/app-shell/src/app-shell.js
@@ -200,10 +200,10 @@ export class AppShell extends ScopedElementsMixin(DBPLitElement) {
                     },
                     {
                         name: 'mainRoute',
-                        path: ['/:component', '/:component/(.*)'],
+                        path: ['/:component/:extra*'],
                         action: (context, params) => {
                             let componentTag = params.component.toLowerCase();
-                            let extra = params[0] ? params[0].split('/') : [];
+                            let extra = params.extra ?? [];
                             return {
                                 lang: params.lang,
                                 component: componentTag,
@@ -958,12 +958,19 @@ export class AppShell extends ScopedElementsMixin(DBPLitElement) {
         // build the menu
         let menuTemplates = [];
         for (let routingName of this.visibleRoutes) {
+            let partialState = {
+                component: routingName,
+            };
+            // clear the extra state for everything but the current activity
+            if (this.activeView !== routingName) {
+                partialState['extra'] = [];
+            }
             menuTemplates.push(
                 html`
                     <li>
                         <a
                             @click="${(e) => this.onMenuItemClick(e)}"
-                            href="${this.router.getPathname({component: routingName})}"
+                            href="${this.router.getPathname(partialState)}"
                             data-nav
                             class="${getSelectClasses(routingName)}"
                             title="${this.metaDataText(routingName, 'description')}">