When updating from TYPO3 8.7 to TYPO3 9.5 you might drop the realurl extension in favor for the new routing feature.
But you might notice, that realurl appended a / to a
Tim, are you sure about getRoutePathRedecorationPattern()?
For me, it worked in two totally different TYPO3 (v9.5.3) instances in production, but both projects did not work in a ddev-container. There, the slugCandidates have always missed its last char.
Changing the pattern from "all except slash" to "exactly a slash" makes it work.
public function getRoutePathRedecorationPattern(): string
{
return '\/$';
}