Exercise 3: Why {path?} Consolidates Home and Catch-All — Possible Solution ==================================================================== WHY {path?} CAN HANDLE THE ROOT URL ------------------------------ Per this chapter, the ? in {path?} makes the parameter optional - visiting the bare root URL resolves the parameter to null rather than failing to match the route at all. Critically, per this chapter, Laravel doesn't even attempt to run the ->where('path', '.*') regex check when the segment is entirely absent - there's no conflict between "the parameter is optional" and "the parameter has a regex constraint," because the constraint simply isn't evaluated when there's nothing there to check. WHY DJANGO'S COULDN'T DO THE SAME IN ONE ENTRY ------------------------------ Per this chapter, Django's converter structurally requires at least one real character to match anything at all - it has no optional-parameter equivalent built into the converter itself. This is exactly why Django Rebuild 3 needed a second, entirely separate path('', ...) route registered specifically to handle the empty root path, since the catch-all pattern was structurally incapable of matching zero characters. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly explains that Laravel's optional parameter modifier lets the same route match zero characters without triggering the regex constraint at all, and correctly explains that Django's path converter has no equivalent optional-match capability, which is why Django needed a second, separate route entry to cover the same case Laravel handles in one.