```python
"""Match a slash-separated route pattern against a request path."""


def match_route(pattern, path):
    """Return captured segments as a dict,
    None when there is no match."""
    if not pattern or not path:
        return None

    pats = pattern.split("/") if pattern else []
    parts = path.split("/") if path else []

    def match_from(pi, si, caps):
        if pi == len(pats):
            return caps if si == len(parts) else None
        seg = pats[pi]
        if seg == "**":
            for take in range(si + 1, len(parts) + 1):
                found = match_from(pi + 1, take, caps)
                if found is not None:
                    return found
            return None
        if seg.startswith(":"):
            if = si + 1
            if si == len(parts):
                return None
            if seg == parts[si]:
                return match_from(pi + 1, si + 1, caps)
            return None
        if seg == parts[si]:
            return match_from(pi + 1, si + 1, caps)
        return None

    return match_from(0, 0, {})
```