Repository: next.js
Issue: Selectively overriding dynamic segments with static ones within parallel routes not ideal / slightly broken
Labels: bug

### Link to the code that reproduces this issue

[codesandbox link](https://codesandbox.io/p/devbox/parallel-dynamic-segments-z9wnrj)

### To Reproduce

1. Open codesandbox link.
2. Try the 4 different example links.

### Current vs. Expected behavior

There should be some way to override specific routes within parallel routes by using one of the methods described here (and demonstrated in codesandbox)...

Lets say that I want to have some parallel routes (`slotA` & `slotB`) and to use them with dynamic route segments.
For arguments sake, lets say that we have arbitrary many perspectives, which dynamically change the content of the page.
however, we want to always override the 'home' perspective to be statically generated but only in `slotA`.
This sort of thing can be done with other routers I've used.

## Approach # 1 - override dynamic segment with named route segment 
This is the approach I'd naturally gravitate to...

```
coolFeatureA/[someSegment]
│   ├── @slotA
│   │   ├── [perspective]
│   │   │   └──page.tsx <== should render dynamic content based on the {perspective} param (except for 'home')
│   │   └── home
│   │       └──page.tsx <== override and specifically match the 'home' perspective and render.
│   ├── @slotB
│   │   └── [perspective]
│   │       └──page.tsx <== renders dynamic content based any {perspective} param
│   └── layout.tsx <== renders {slotA} and {slotB}
└── layout.tsx
```
This works for any path that is not 'home', but the router throws a `NEXT_NOT_FOUND` if you try it.
ie. works for `coolFeatureA/mountain/work`, but not for `coolFeatureA/mountain/home`


## Approach # 2 - use named route segment and a catch all dynamic segment

```
coolFeatureB/[someSegment]
│   ├── @slotA
│   │   ├── [...perspective]
│   │   │   └──page.tsx <== Should catch all perspectives not explicitly handled
│   │   └── home
│   │       └──page.tsx <== Specifically handle 'home'
│   ├── @slotB
│   │   └── [...perspective]
│   │       └──page.tsx <== Should catch all perspectives not explicitly handled
│   └── layout.tsx <== renders {slotA} and {slotB}
└── layout.tsx

```

This sort of works as you'd expect.
For `coolFeatureB/mountain/work` everything is as it should be with the `perspective` parameter populated correctly by the catch-all.
But for `coolFeatureA/mountain/home` it renders correctly - but the `perspective` parameter **IS NOT** populated for **EITHER** slot - even the one rendered by the catch all. 
I would expect the `[...perspective]` parameter to be present - at least in `slotB`
NB. Neither approach works in 14.0.4

---

I understand this can be done by conditionally rendering the 'home' perspective within the page.tsx file, but I am interested to know if it is possible to selectively override one specific dynamic route with a static one.


I would like to know:
a) If this should be possible - and therefore this is a bug
b) If this is not possible:
   bi) Why?
  bii) Is there an alternative strategy to achieve the same result.

### Provide environment information

```bash
Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 23.0.0: Fri Sep 15 14:42:57 PDT 2023; root:xnu-10002.1.13~1/RELEASE_ARM64_T8112
Binaries:
  Node: 18.17.1
  npm: 9.6.7
  Yarn: 4.0.2
  pnpm: N/A
Relevant Packages:
  next: 14.0.4
  eslint-config-next: 14.0.4
  react: 18.2.0
  react-dom: 18.2.0
  typescript: 5.3.3
Next.js Config:
  output: N/A
```


### Which area(s) are affected? (Select all that apply)

App Router

### Which stage(s) are affected? (Select all that apply)

next dev (local)

### Additional context

_No response_