        (route-names [_]
          names)
        (match-by-path [_ path]
-         (if-let [match (segment/lookup pl path)]
-           (-> (:data match)
-               (assoc :path-params (impl/url-decode-coll (:path-params match)))
-               (assoc :path path))))
+         (let [slashed-path (ensure-slash path)]
+           (if-let [match (segment/lookup pl slashed-path)]
+             (-> (:data match)
+                 (assoc :path-params (impl/url-decode-coll (:path-params match)))
+                 (assoc :path slashed-path)))))
        (match-by-name [_ name]
          (if-let [match (impl/fast-get lookup name)]
            (match nil)))

       (match-by-path [_ path]
         (reduce
           (fn [_ ^Route route]
             (if-let [path-params ((:matcher route) path)]
               (reduced (->Match (:path route) (:data route) (:result route) (impl/url-decode-coll path-params) path))))
           nil pl))
       (match-by-name [_ name]
         (if-let [match (impl/fast-get lookup name)]

       (route-names [_]
         names)
       (match-by-path [_ path]
         (impl/fast-get data (ensure-slash path)))
       (match-by-name [_ name]
         (if-let [match (impl/fast-get lookup name)]
           (match nil)))
